Страница 1 из 1

Парсинг плоского json

Добавлено: 17 май 2013, 15:05
jBee
Есть 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 ");
		}

Re: Парсинг плоского json

Добавлено: 17 май 2013, 15:44
KamiSempai
Тут 2 варианта:
1) В "key1" лежит не строка, а что-то другое.
2) В JSON строке ошибка и она не парсится.

Добавьте в catch:

Код: Выделить всё

e.printStackTrace();
И напишите здесь, что вывело в логи, тогда я Вам точно смогу сказать.

Re: Парсинг плоского json

Добавлено: 17 май 2013, 15:46
Mikhail_dev
А ошибку нельзя прочитать? К примеру вместо этого
Log.e("JSON Parser", "Error parsing data ");
вот это
Log.e("JSON Parser", "Error parsing data ", e);

Судя по коду, val1 это строка, которая должна стоять в кавычках.

P.S. хех, опоздал с ответом =)

Re: Парсинг плоского json

Добавлено: 20 май 2013, 12:52
jBee
В 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 просто не было данных поэтому и была ошибка.