org.json.JSONObject costruttore non accettando quello che sembra essere una stringa JSON valida
-
01-10-2019 - |
Domanda
Ho un string
in un app Android
che sto cercando di convertire in un JSONObject
. Gli sguardi string
come questo (tranne più a lungo e con valori effettivi invece dei valori fittizi sono entrato qui):
[[{"1":"a"}],[{"1a":"1a","1b":"1b"},{"2a":"2a","2b":"2b"}]]
ho inserito questo string
esatto in due JSON validator
s on-line, ed entrambi confermano di essere JSON data
valida. Quindi presumo che il costruttore JSONObject
sarebbe in grado di accettare questa stringa e convertirlo in un JSONObject
. Ma quando provo:
json = new JSONObject(result);
Dove si trova il "risultato" di una variabile String che contiene la stringa sopra elencati, ottengo la seguente eccezione:
JSONException: A JSONObject text must begin with '{' at character 1 of [[{"1":"a"}],[{"1a":"1a","1b":"1b"},{"2a":"2a","2b":"2b"}]]
Che cosa sta succedendo qui? Si parser del JSONObject
rotto?
Soluzione
Si sta tentando di creare un JSONObject, ma ciò che in realtà si sta dando è una JSONArray. Hai provato la creazione di un JSONArray invece?
In alternativa, si potrebbe avvolgere l'array in un oggetto in modo da poter creare un JSONObject fuori di esso.
Altri suggerimenti
Io suggerirei di usare la biblioteca GSON , invece, come sembra essere più full-optional.
Inoltre, può essere utile utilizzare questo strumento per testare i dati (i dati è valida btw):