Вопрос:
У меня есть этот JSON, который приходит из одной из наших служб REST:
[ «{«category_name»:[«Industry Components»],»categoryId»:[1]}», «{«category_name»:[«Business Components»],»categoryId»:[2]}», «{«category_name»:[«Utilities»],»categoryId»:[3]}», «{«category_name»:[«Tools»],»categoryId»:[4]} ]
Я использую java-json.jar для синтаксического анализа этого JSON, это простой фрагмент, в котором я пытаюсь пройти над строкой JSON:
JSONObject jsonObject = new JSONObject(jsonStr);
Но я получаю ниже исключения:
org.json.JSONException: A JSONObject text must begin with ‘{‘ at 1 [character 2 line 1]
Сначала я предположил это из-за символов [ и ] в JSON, и я попытался заменить их следующим образом:
String replacedStr = jsonStr.replaceAll(«\[«, «»).replaceAll(«\]», «»)
Но даже тогда я получаю такое же исключение. Может ли кто-нибудь помочь мне узнать, что я делаю неправильно?
Лучший ответ:
Я полагаю, что вы должны использовать не JSONObject, а JSONArray
Ответ №1
Объект JSON следует следующей структуре:
{ «array»: [ { color: «red», value: «#f00» }, { color: «green», value: «#0f0» } ] }
JSON Array следует следующей структуре:
[ { «firstName»:»John» , «lastName»:»Doe» }, { «firstName»:»Anna» , «lastName»:»Smith» }, { «firstName»:»Peter» , «lastName»: «Jones» } ] Ответ №2
Если вы получите текст JSONObject, начинайте с исключения ‘{‘.
Затем сначала проверьте, что вы передали в конструктор JSONObject.
Вы должны передать правый файл json.txt. Убедитесь, что вы переходите к jsonobject.
String request = FileUtils.readFileToString(new File(«/home/achaure/Downloads/Amol/KountRestTest/Documents/request.txt»)); JSONObject jsonObject = new JSONObject(request);