webentwicklung-frage-antwort-db.com.de

Ein JSONObject-Text muss mit '{' bei 1 [Zeichen 2, Zeile 1] mit dem Fehler '{' beginnen

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);

Ich habe viele Lösungen zum Parsing diesen Link verwiesen, die immer noch den gleichen Fehler in Frage stellen.

9
Dev-X

Ihr Problem ist, dass String JSON = "http://www.json-generator.com/j/cglqaRcMSW?indent=4"; nicht JSON ist.
Sie möchten eine HTTP-Verbindung zu " http://www.json-generator.com/j/cglqaRcMSW?indent=4 " öffnen und die JSON response analysieren. .

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

Öffnet keine Verbindung zur Site und ruft den Inhalt ab.

8
Assaf Gamliel

Ich hatte das gleiche Problem. Meine Json-Antwort vom Server hatte [ und]:

[{"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/ sagt gültigen Json. Sie können es kopieren und überprüfen.

Ich habe mit dem folgenden Code als temporäre Lösung behoben:

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

Ich hatte den gleichen Fehler und Mühe, ihn zu beheben. Dann antwortete Nagaraja JB und half mir, ihn zu beheben. In meinem Fall:

Vorher war: JSONObject response_json = new JSONObject (response_data);

Geändert in: JSONArray response_json = new JSONArray (response_data);

Das hat es behoben.

2
sonu1986

Ich hatte das gleiche, es gab am Anfang ein leeres neues Zeichen ...

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

Ich hatte ein ähnliches Problem aufgrund eines kleinen Fehlers, als ich versuchte, eine Liste in json zu konvertieren. Wenn eine Liste in json konvertiert wird, wird JSONArray und nicht JSONObject zurückgegeben.

1
Nagaraja JB

in meinem Fall löst meine Arraylist diesen Fehler mit dem JSONObject aus, aber ich finde diese Lösung für mein Array von String-Objekten

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

Funktioniert wie Charm mit eckigen Gson-Version 2.8.5

1
Andres Navarro

Ich hatte das gleiche Problem wegen der falschen Reihenfolge der Code-Anweisungen. Behalten Sie die folgende Reihenfolge bei, um das Problem zu beheben. Alle erhalten Methodenmethoden zuerst und später httpClient-Methoden.

      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);

In meinem Fall war die Kodierung der Json-Datei ein Problem

Ich habe eine JSON-Datei in vb .net mit folgendem Befehl erzeugt:

Ich habe alle Vorschläge in diesem Beitrag ausprobiert, aber keiner hat geholfen.

In Notepad ++ wurde schließlich festgestellt, dass sich die erstellte Datei in UTF-8-BOM befand

Ich wusste nicht genau, wie die Codierung aufgenommen wurde, aber nachdem ich die Codierung auf UTF-8 umgestellt hatte, wurde sie ohne weitere Änderungen aufgelöst.

Hoffe das hilft jemandem.

0
Dinesh

Während der JSON mit "[" beginnt und mit "]" endet, was bedeutet, dass dies das JSON-Array ist, verwenden Sie stattdessen JSONArray:

JSONArray jsonArray = new JSONArray(JSON);

Und dann können Sie es mit dem Listentestobjekt abbilden, wenn Sie Folgendes benötigen:

ObjectMapper mapper = new ObjectMapper();
List<TestExample> listTest = mapper.readValue(String.valueOf(jsonArray), List.class);
0
Raymond

Ihr JSON ist vollkommen gültig. Verwenden Sie diese JSON-Klassen, um sie zu analysieren. http://json.org/Java/

0
Daan Luttik