У меня есть строка в формате JSON. Например:Как получить значения из смешанного типа json?
{
"blockedStatus":true,
"cars":[
"RAW:123",
"TVU:123"
],
"phones":[
"370665566",
"3706324231"
]
}
Это выход с сервера. Мне нужно получить отдельные значения, но я не знаю, как это сделать.
Пробовал так:
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
StringBuilder builder = new StringBuilder();
for (String line = null; (line = reader.readLine()) != null;) {
builder.append(line).append("\n");
}
JSONTokener tokener = new JSONTokener(builder.toString());
JSONArray finalResult = new JSONArray(tokener);
Log.e("IO-OUTPUT", builder.toString()); //prints json output
Log.e("finalResult (1)", finalResult.getString(1));
Но я муравей исключения:
W/System.err(31249): org.json.JSONException: Value {"blockedStatus":true,"cars":["RAW"],"phones":["65431"]} of type org.json.JSONObject cannot be converted to JSONArray
Есть еще один способ, чтобы получить значение? Поскольку вычисления символов и получения значений из него будет слишком трудно
Есть несколько действительно хороших библиотек для работы с JSON, которые делают вашу жизнь намного проще, особенно когда ваша модель домена изменяется, и вам нужно обновить JSON соответственно. Взгляните на Гссона или Джексона. – Simon
Gson - действительно отличная работа, чтобы сэкономить время. – slhddn
Проверьте json-io, относительно небольшую библиотеку ~ 100K, которая не имеет других зависимостей, кроме JDK. Он популярен у разработчиков Android. https://github.com/jdereg/json-io –