IPB


Бесплатные VPN сервера

Здравствуйте, гость ( Вход | Регистрация )

> Внимание!

Задавая вопрос, обязательно укажите свой логин, домен и скрипт, которых он касается.

>> !!Ответы на 90% вопросов здесь!! <<


Правила хостинга | Общие ошибки новичков | Поиск

2 страниц V  < 1 2  
Тема закрытаНачать новую тему
php не рубится к SQL
desutorakuta
сообщение 4.4.2012, 23:50
Сообщение #21


Студент
****

Группа: Пользователи
Сообщений: 61
Регистрация: 12.3.2012
Пользователь №: 4926
Домен: cirn0.tk cirn0.nx.ru


Цитата(baralgin1003 @ 4.4.2012, 8:53) *
ваш код работает)) можно узнать в чем его секрет?)), но адаптировать к своей задаче я его так и не смог... при попытке это сделать, русские символы выдаются кодами \u0440\u043e\u0442\u043e\u043c\u0430\u043d

Ни в чём. Я просто вывел запрос от базы напрямую, поэлементно. Значит база выдаёт нужную кодировку, а ломает её скорее всего json_encode.

Чисто для проверки:
Код
print json_encode("строка") . "строка";

Если так - боюсь вам придётся писать свой формирователь json документа.

Покажите пожалуйста попытки адаптации.

'\n' выводится, просто браузер обрезает его, считая документ хтмл-ным. Чтобы увидеть форматирование - разкомментируйте строки с выводом тегов.

foreach($array as $key => $value) expression; - выполняет expression для всех пар ключь -> значение из массива $array.

Прошу прощения что долго не отвечал - были неполадки с интернетом.
Перейти в начало страницы
 
+Цитировать сообщение
baralgin1003
сообщение 5.4.2012, 7:06
Сообщение #22


Выпускник
**

Группа: Пользователи
Сообщений: 16
Регистрация: 26.3.2012
Пользователь №: 4958



спасибо, щас займусь этим)) еще вопрос вдогонку. а в какой кодировке лучше базу создавать? всё по умолчанию оставлять?

действительно...
вот ответ скрипта
Код
"\u0441\u0442\u0440\u043e\u043a\u0430"строка
Перейти в начало страницы
 
+Цитировать сообщение
baralgin1003
сообщение 5.4.2012, 8:38
Сообщение #23


Выпускник
**

Группа: Пользователи
Сообщений: 16
Регистрация: 26.3.2012
Пользователь №: 4958



подозреваю еще что сервер неправильно возврщает ответ.
вот так надо в туторе
Код
{"earthquakes": [
02
    {
03
        "eqid": "c0001xgp",
04
        "magnitude": 8.8,
05
        "lng": 142.369,
06
        "src": "us",
07
        "datetime": "2011-03-11 04:46:23",
08
        "depth": 24.4,
09
        "lat": 38.322
10
  },
11
  {
12
        "eqid": "2007hear",
13
        "magnitude": 8.4,
14
        "lng": 101.3815,
15
        "src": "us",
16
        "datetime": "2007-09-12 09:10:26",
17
        "depth": 30,
18
        "lat": -4.5172
19
  }
20
<--more -->
21

22
]}


у меня же все в одну строку
Код
[{"id":"1","machine":"\u0440\u043e\u0442\u043e\u043c\u0430\u043d 55","time_begin":"1053585"},{"id":"2","machine":"\u043f\u043e\u0433 98","time_begin":"12365"}]
Перейти в начало страницы
 
+Цитировать сообщение
desutorakuta
сообщение 5.4.2012, 11:49
Сообщение #24


Студент
****

Группа: Пользователи
Сообщений: 61
Регистрация: 12.3.2012
Пользователь №: 4926
Домен: cirn0.tk cirn0.nx.ru


Чтобы увидеть ответ сервера посмотрите исходный код страницы (В лисёнке и, кажется, в опере: [Ctrl]+[U]). Браузер сам режет переносы.

Кодировка utf8 _general. Что либо, кроме юникода - это уже не красиво в наши дни.
Перейти в начало страницы
 
+Цитировать сообщение
baralgin1003
сообщение 5.4.2012, 11:51
Сообщение #25


Выпускник
**

Группа: Пользователи
Сообщений: 16
Регистрация: 26.3.2012
Пользователь №: 4958



ситуация складывается гораздо интереснее)) вот что мне ответили на хэшкоде
Цитата
Итак, воспроизвел ваш код парсинга JSON'а. Вот мой вариант, он ничем в принципе не отличается от вашего

Код
public void onParseIt(View source) {
    String sourceJson = "[{\"id\":\"1\",\"machine\":\"Nissan\",\"time_begin\":\"1053585\"},                              {\"id\":\"2\",\"machine\":\"Toyota\",\"time_begin\":\"12365\"}]";
    try {
        final JSONArray arr = new JSONArray(sourceJson);
        for (int i = 0; i < arr.length(); i++) {
            final JSONObject obj = arr.getJSONObject(i);
            int id = obj.getInt("id");
            String machine = obj.getString("machine");
            int timeBegin = obj.getInt("time_begin");

            Toast.makeText(getApplicationContext(), "Machine: " + machine,    Toast.LENGTH_SHORT).show();
        }
    } catch (JSONException jsonEx) {
        Log.e("log_tag", "Error parsing data " + jsonEx.toString());
        Toast.makeText(getApplicationContext(), "fail", Toast.LENGTH_SHORT).show();
    }
}

Все парсится и отображается корректно. Могу предположить вариант, когда ваш пы-хы-пы скрипт выдает андроиду не всегда корректный JSON. Проверьте его. Еще я бы посоветовал перед тем, как брать какое-то поле у JSONObject'а проверять наличие сего поля в нем

if (json.has("name")) {
mName = json.getString("name");
}
Это немного увеличит объем кода, который нужно будет напидалить руками. Совет номер два: посмотрите в сторону gson или другой аналогичной библиотеки для работы с JSON'ом, это позволит в разы сократить написание повторяющегося кода для JSON-парсинга. Строить POJO-класс (пусть будет модель) и аннотациями указываете соответствие ее членов полям в JSON-объекте


меня смутило , что в рабочей ДСОН-строке стоят сплэши, которых в моем примере нету((
Перейти в начало страницы
 
+Цитировать сообщение
desutorakuta
сообщение 10.4.2012, 23:19
Сообщение #26


Студент
****

Группа: Пользователи
Сообщений: 61
Регистрация: 12.3.2012
Пользователь №: 4926
Домен: cirn0.tk cirn0.nx.ru


Ещё раз простите, как то пропустил ваш пост.

Если вы про строчку
Код
String sourceJson = "[{\"id\":\"1\",\"machine\":\"Nissan\",\"time_begin\":\"1053585\"}
то тут заслешованы знаки двойной кавычки, чтобы интерпретатор/компилятор нормально распознал строки, т.е. чтобы отличить знак двойных кавычек, от символа конца строкового литерала.

a = 5
b = 7
c = " ". a . " " . b . " ";
echo c; // выведет> 7 5
d = " \". a . \" \" . b . \" "
echo d; // выведет> " . a . " " . b "

Но это уже разбор JSON'а, а не сборка, верно?
Перейти в начало страницы
 
+Цитировать сообщение

2 страниц V  < 1 2
Тема закрытаНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 6.12.2019, 6:36