Текст JSONObject должен начинаться с '{' в 1 [символ 2 строка 1] с ошибкой '{'
String JSON = "http://www.json-generator.com/j/cglqaRcMSW?indent=4";
JSONObject jsonObject = new JSONObject(JSON);
JSONObject getSth = jsonObject.getJSONObject("get");
Object level = getSth.get("2");
System.out.println(level);
Я сослался на множество решений для разбора этой ссылки, все еще получая ту же ошибку в вопросе. Может ли кто-нибудь дать мне простое решение для его анализа.
Ответы
Ответ 1
Ваша проблема в том, что String JSON = "http://www.json-generator.com/j/cglqaRcMSW?indent=4";
не JSON
.
Вы хотите открыть соединение HTTP
с http://www.json-generator.com/j/cglqaRcMSW?indent=4" и проанализировать ответ JSON.
String JSON = "http://www.json-generator.com/j/cglqaRcMSW?indent=4";
JSONObject jsonObject = new JSONObject(JSON); // <-- Problem here!
Не будет открывать соединение с сайтом и получать содержимое.
Ответ 2
У меня была такая же проблема. Мой ответ Json с сервера имел [, и,]:
[{"DATE_HIRED":852344800000,"FRNG_SUB_ACCT":0,"MOVING_EXP":0,"CURRENCY_CODE":"CAD ","PIN":" ","EST_REMUN":0,"HM_DIST_CO":1,"SICK_PAY":0,"STAND_AMT":0,"BSI_GROUP":" ","LAST_DED_SEQ":36}]
http://jsonlint.com/ говорит о действительном json. вы можете скопировать и проверить его.
Я установил код ниже в качестве временного решения:
BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())));
String result ="";
String output = null;
while ((result = br.readLine()) != null) {
output = result.replace("[", "").replace("]", "");
JSONObject jsonObject = new JSONObject(output);
JSONArray jsonArray = new JSONArray(output);
.....
}
Ответ 3
У меня было то же самое, в начале появился пустой символ строки.
Это решило это:
int i = result.indexOf("{");
result = result.substring(i);
JSONObject json = new JSONObject(result.trim());
System.out.println(json.toString(4));
Ответ 4
У меня была такая же проблема из-за неправильного порядка операторов кода. Сохраните приведенный ниже порядок, чтобы решить проблему. Все методы получения методов сначала и более поздние методы httpClient.
HttpClient httpClient = new HttpClient();
get = new GetMethod(instanceUrl+usersEndPointUri);
get.setRequestHeader("Content-Type", "application/json");
get.setRequestHeader("Accept", "application/json");
httpClient.getParams().setParameter("http.protocol.single-cookie-header", true);
httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
httpClient.executeMethod(get);
Ответ 5
В моем случае проблема с кодировкой файла json
Я генерировал файл JSON в vb.net со следующими данными: My.Computer.FileSystem.WriteAllText("newComponent.json", json.Trim, False).
И я попробовал все предложения в этом посте, но ни один не помог.
В конце концов в Notepad++ заметили, что созданный файл был в UTF-8-BOM
Не уверен, как он подобрал эту кодировку, но после того, как я переключил кодировку на UTF-8, он разрешился без каких-либо других изменений.
Надеюсь, это кому-нибудь поможет.
Ответ 6
У меня была та же ошибка, и я изо всех сил пытался ее исправить, а ответ выше Нагараджи Дж. Б. помог мне исправить это. В моем случае:
Был раньше: JSONObject response_json = новый JSONObject (response_data);
Изменено: JSONArray response_json = новый JSONArray (response_data);
Это исправило это.
Ответ 7
У меня была похожая проблема из-за маленькой ошибки, когда я пытался преобразовать список в json. Если список преобразуется в json, он возвращает JSONArray, а не JSONObject.
Ответ 8
в моем случае мой arraylist передает мне эту ошибку с JSONObject, но я найду это решение для моего массива объектов String
List<String> listStrings= new ArrayList<String>();
String json = new Gson().toJson(listStrings);
return json;
Работает как шарм с угловой версией Gson 2.8.5
Ответ 9
Ваш JSON отлично действует. Попробуйте использовать эти классы JSON для его анализа. http://json.org/java/
Ответ 10
Хотя json начинается с "[" и заканчивается "]", что означает, что это массив Json, вместо этого используйте JSONArray:
JSONArray jsonArray = new JSONArray(JSON);
А затем вы можете сопоставить его с объектом проверки списка, если вам нужно:
ObjectMapper mapper = new ObjectMapper();
List<TestExample> listTest = mapper.readValue(String.valueOf(jsonArray), List.class);
Ответ 11
Собственно, я нашел простой ответ: Jst добавляет объект в String Builder вместо того, чтобы String работал;)
StringBuilder jsonString= new StringBuilder.append("http://www.json-.com/j/cglqaRcMSW?=4");
JSON json= new JSON(jsonString.toString);