2011-01-23 19 views
8

tengo este JSONObject:texto JSONObject debe comenzar con '{'

{ 
    "gutter_url" : "", 
    "sort_order" : "popularity", 
    "result" : [ 
    { 
     "afs" : "Y", 
     "release_year" : 1979, 
     "album_sort" : "Wall, The" 
    } 
    ] 
} 

y desea obtener la matriz en la posición de "número", así que escribió este código:

JSONObject allCDs = new JSONObject(objectString); 
JSONArray CD_List = allCDs.getJSONArray("result"); 

pero entonces me conseguir este Excepción:

Exception in thread "main" org.json.JSONException: A JSONObject text must begin with '{' at character 1 
at org.json.JSONTokener.syntaxError(JSONTokener.java:410) 
at org.json.JSONObject.<init>(JSONObject.java:179) 
at org.json.JSONObject.<init>(JSONObject.java:402) 
at de.htwberlin.gim.Aufgabe8_5.getCoversFor(Aufgabe8_5.java:55) 
at de.htwberlin.gim.Aufgabe8_5.main(Aufgabe8_5.java:77) 
+0

¿Cuál es objectString en el código? –

+1

¿Has resuelto esto? – briankip

Respuesta

1

tiene dos comas al final de esta línea:

"sort_order" : "popularity",, 

Es probablemente debería ser una coma:

"sort_order" : "popularity", 
+2

tiene razón, pero en realidad este error de coma fue solo porque acorté el JSONObject para esta pregunta en stackoverflow. El original es totalmente correcto y verificado. – wong

12

Usted puede ser pasando la cadena de JSONObject con espacios iniciales. Trate de recortar

JSONObject allCDs = new JSONObject(objectString.replace(/^\s+/,"")); 

EDIT: pensé que esto era javascript. Trate de recorte utilizando el código de Java en lugar

JSONObject allCDs = new JSONObject(objectString.trim()); 

Si aún así no funciona, a continuación, mostrar lo que el primer carácter de la cadena es:

System.out.println((int)objectString.trim().charAt(0)); 

Usted debe esperar 123, de las llaves. De hecho, revisar todo el contenido

System.out.println((int)objectString); // or 
System.out.println((int)objectString.trim()); 

También puede intentar cortar todo antes de la {en la cadena

JSONObject allCDs = new JSONObject(objectString.substring(objectString.indexOf('{'))); 
+1

tiene razón, pero en realidad este error de coma fue solo porque acorté el JSONObject para esta pregunta en stackoverflow. El original es totalmente correcto y verificado. – wong

+0

lo tengo. respuesta actualizada con otra posibilidad – RichardTheKiwi

+1

El JSONObject (objectString.replace (/^\ s + /, "")); no funciona: ((.replace es sólo para los caracteres – wong