2013-10-16 15 views
14

Ho questo JSON proveniente da uno dei nostri servizi REST:Un JSONObject testo deve iniziare con '{' errore

[ 
    "{\"category_name\":[\"Industry Components\"],\"categoryId\":[1]}", 
    "{\"category_name\":[\"Business Components\"],\"categoryId\":[2]}", 
    "{\"category_name\":[\"Utilities\"],\"categoryId\":[3]}", 
    "{\"category_name\":[\"Tools\"],\"categoryId\":[4]} 
] 

sto usando java-json.jar per analizzare questo JSON, questo è il semplice frammento dove sto cercando di passare sopra JSON stringa:

JSONObject jsonObject = new JSONObject(jsonStr); 

Ma io sono sempre al di sotto di eccezione:

org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1] 

In primo luogo ho pensato che è a causa della [ e ] personaggi in JSON e ho cercato di sostituire, come di seguito:

String replacedStr = jsonStr.replaceAll("\\[", "").replaceAll("\\]", "") 

Ma anche allora io sono sempre lo stesso eccezione. Qualcuno può guidarmi per sapere cosa sto sbagliando?

+1

Sembra che manchi una citazione di chiusura sull'ultima riga. – par

risposta

34

suppongo che si dovrebbe utilizzare non JSONObject, ma JSONArray

+1

Grazie amico che hai fatto di giorno. Ora funziona perfettamente. –

14

JSON oggetto segue la seguente struttura:

{ 
"array": [ 
{ 
    color: "red", 
    value: "#f00" 
}, 
{ 
    color: "green", 
    value: "#0f0" 
} 
] 
} 

JSON Array segue la seguente struttura:

[ 
{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"Peter" , "lastName": "Jones" } 
] 
+1

Se hai intenzione di incorporare un array in un oggetto, deve apparire come '{" chiave ": [valore (i)]}' – par

+0

Inoltre non ho il controllo sull'input (cioè JSON) che sono ricevente. (E non ti ho minimizzato) –

+0

Grazie per questa distinzione. – Speakeasys

0

Se si ottiene Il testo JSONObject deve iniziare con l'eccezione '{'. Quindi, innanzitutto, spunta tutto ciò che hai passato al costruttore JSONObject.

È necessario passare il file json.txt corretto. Assicurarsi di passare a jsonobject.

String request = FileUtils.readFileToString(new File("/home/achaure/Downloads/Amol/KountRestTest/Documents/request.txt")); 

JSONObject jsonObject = new JSONObject(request); 
Problemi correlati