SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
-
jBee
- Сообщения: 41
- Зарегистрирован: 03 апр 2013, 16:24
Сообщение
jBee » 17 май 2013, 15:05
Есть json строка в формате {"key1":val1, "key2":val2, "key3":val3}
Как получить значения по имени ключа?
Следующий код выдает исключение
Код: Выделить всё
String line = "{"key1":val1, "key2":val2, "key3":val3}";
try {
JSONObject jObj = new JSONObject(line);
Log.d("NAME", jObjlogin.getString("key1"));
} catch (Exception e) {
Log.e("JSON Parser", "Error parsing data ");
}
-
KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Сообщение
KamiSempai » 17 май 2013, 15:44
Тут 2 варианта:
1) В "key1" лежит не строка, а что-то другое.
2) В JSON строке ошибка и она не парсится.
Добавьте в catch:
И напишите здесь, что вывело в логи, тогда я Вам точно смогу сказать.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
-
Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Сообщение
Mikhail_dev » 17 май 2013, 15:46
А ошибку нельзя прочитать? К примеру вместо этого
Log.e("JSON Parser", "Error parsing data ");
вот это
Log.e("JSON Parser", "Error parsing data ", e);
Судя по коду, val1 это строка, которая должна стоять в кавычках.
P.S. хех, опоздал с ответом =)
-
jBee
- Сообщения: 41
- Зарегистрирован: 03 апр 2013, 16:24
Сообщение
jBee » 20 май 2013, 12:52
В key1 лежит именно строка т.е. так: "key1":"val1"
Добавил в вывод исключения Log.e("JSON Parser", "Error parsing data " + e.toString()); получил сообщение:
Error parsing data java.lang.NullPointerException
А дело было так:
Код: Выделить всё
String line = "";
while ((line = intro.readLine()) != null ) {
//System.out.println(line);
Log.d(TAG_POST, line);
// Здесь line имеет значение не "" !!!
}
intro.close();
// А здесь line имеет значение null
// и вот тут уже работает код который я привел в первом посте, и он выбрасывает Exception
Т.е. на момент парсинга в line просто не было данных поэтому и была ошибка.