it-swarm.com.ru

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

Я сослался на множество решений для синтаксического анализа эта ссылка , все еще получая ту же ошибку в вопросе . Может ли кто-нибудь дать мне простое решение для ее анализа.

9
Dev-X

Ваша проблема в том, что String JSON = "http://www.json-generator.com/j/cglqaRcMSW?indent=4"; не является JSON.
То, что вы хотите сделать, это открыть HTTP соединение с " http://www.json-generator.com/j/cglqaRcMSW?indent=4 " и проанализировать JSON response.

String JSON = "http://www.json-generator.com/j/cglqaRcMSW?indent=4";
JSONObject jsonObject = new JSONObject(JSON); // <-- Problem here!

Не будет открывать соединение с сайтом и извлекать контент.

8
Assaf Gamliel

У меня была такая же проблема. Мой ответ 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); 
    .....   
}
5
bekur

У меня было то же самое, в начале был пустой символ новой строки .... Это решило это:

int i = result.indexOf("{");
result = result.substring(i);
JSONObject json = new JSONObject(result.trim()); 
System.out.println(json.toString(4));  
1
palossyl

У меня была похожая проблема из-за маленькой ошибки, когда я пытался преобразовать список в json .... Если список преобразован в json, он вернет JSONArray, а не JSONObject.

1
Nagaraja JB

в моем случае мой arraylist выдает мне эту ошибку с JSONObject, но я найду это решение для моего массива объектов String

List<String> listStrings= new ArrayList<String>();
String json = new Gson().toJson(listStrings);
return json;

Работает как шарм с угловой Gson версия 2.8.5

1
Andres Navarro

У меня была такая же проблема из-за неправильного порядка операторов кода. Поддержите приведенный ниже порядок для решения проблемы. Все операторы get получают сначала методы, а затем методы 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);
1
AGAPU SHIVA RAMA KRISHNA

В моем случае проблема с кодировкой файла json

Я генерировал файл JSON в vb .net со следующим: My.Computer.FileSystem.WriteAllText ("newComponent.json", json.Trim, False)

И я попробовал все предложения в этом посте, но ни один не помог.

В конце концов в Notepad ++ заметил, что созданный файл был в UTF-8-BOM

Не уверен, как он подобрал эту кодировку, но после того, как я переключил кодировку на UTF-8, он разрешился без каких-либо других изменений.

Надеюсь, это кому-нибудь поможет.

0
Dinesh

Ваш JSON совершенно действителен. Попробуйте использовать эти классы JSON для его анализа. http://json.org/Java/

0
Daan Luttik