Текст 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);