org.json.JSONObject конструктор не принимает то, что кажется допустимой строкой JSON - PullRequest
2 голосов
/ 08 сентября 2010

У меня есть string в Android приложении, которое я пытаюсь преобразовать в JSONObject. string выглядит следующим образом (за исключением более длинных и с действительными значениями вместо фиктивных значений, которые я здесь ввел):

[[{"1":"a"}],[{"1a":"1a","1b":"1b"},{"2a":"2a","2b":"2b"}]]

Я ввел этот точный string в два онлайн JSON validator с, и оба они подтверждают, что он действителен JSON data. Поэтому я предполагаю, что конструктор JSONObject сможет принять эту строку и преобразовать ее в JSONObject. Но когда я пытаюсь:

json = new JSONObject(result);

Где «result» является строковой переменной, содержащей строку, указанную выше, я получаю следующее исключение:

JSONException: A JSONObject text must begin with '{' at character 1 of [[{"1":"a"}],[{"1a":"1a","1b":"1b"},{"2a":"2a","2b":"2b"}]]

Что здесь происходит? Парсер JSONObject не работает?

Ответы [ 2 ]

8 голосов
/ 08 сентября 2010

Вы пытаетесь создать JSONObject, но на самом деле вы даете ему JSONArray. Вы пытались создать JSONArray вместо этого?

В качестве альтернативы, вы можете заключить ваш массив в объект, чтобы вы могли создать из него JSONObject.

0 голосов
/ 08 сентября 2010

Я бы предложил использовать библиотеку GSon , поскольку она выглядит более полнофункциональной.

Кроме того, может быть полезно использовать этот инструмент для проверки ваших данных (кстати, ваши данные действительны):

...