Ошибка при разборе строки JSON в Android. Строка сама по себе выглядит нормально, по крайней мере, похоже на то, что я намеревался вернуть. Но я рушился, пытаясь разобрать его. Может ли кто-нибудь понять, почему? Благодаря!Ошибка разбора строки JSON в Android
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
public JSONObject makeHttpRequest(String url, List<NameValuePair> params) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
if (params != null) {
httpPost.setEntity(new UrlEncodedFormEntity(params));
}
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "n");
}
is.close();
json = sb.toString();
Log.e("JSON", json);
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
System.err.println("start try3"); //<--fine here
System.err.println(json); //<--json string looks good
jObj = new JSONObject(json);
System.err.println("done try3"); //<--never outputs
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
Трассировка стека:
08-05 15: 28: 00,665: Е/JSON Parser (20009): данные об ошибках синтаксического анализа org.json.JSONException: Значение [{ "ID" : "3", "bool_gets_sms": "0", "picture_url": "нет", "электронная почта": "[email protected]", "клетка": "12345", "имя": "Вереск"}, { "ID": "7", "bool_gets_sms": "0", "picture_url": "нет", "электронная почта": "[email protected]", "клетка": "12335", "имя":» Алан "}, {" ID ":" 10" , "bool_gets_sms": "0", "picture_url": "нет", "электронная почта": "[email protected]", "клетка": "12345",» имя ":" Jenni "}, {" ID ":" 11" , "bool_gets_sms": "0", "picture_url": "Ничего", "электронная почта": "[email protected]", "клетка":» 12345" , "имя": "Джефф"}, { "ID": "24",» bool_gets_sms ":" 0 "," picture_url ":" none "," email ":" [email protected] "," cell ":" 12345 "," name ":" Rob "}] типа org.json .JSONArray не может быть преобразован в JSONObject
Я могу изменить то, что возвращает сервер. Переход на JSONArray очень проблематичен, поскольку он имеет много последующих последствий. Можете ли вы предложить, какой тип формата сервер должен возвращать, чтобы вписаться в класс JSONObject? – Alex
@ usr55410 Все, что вам нужно сделать, это вложить этот массив в объект. На каком языке работает ваш сервер? – Tonithy
php. Последняя строка в моем php-коде: 'echo json_encode ($ array);'. У меня есть полная гибкость, чтобы изменить это, если он будет легче вписываться в класс JSONObject. – Alex