У меня есть следующие строки в JSON код:Android JSONObject перемешиваются
json = new JSONObject(
"{\"Questions\":{"
+ "\"1\":[\"ELSYS\",\"ELSYS2\",\"ELSYS3\",\"ELSYS4\"],"
+ "\"2\":[\"1024\",\"2048\",\"512\",\"64\"],"
+ "\"3\":[\"RANDOM1\",\"RANDOM2\",\"RANDOM3\",\"RANDOM4\"],"
+ "\"4\":[\"A DOG1\",\"A DOG2\",\"A DOG3\",\"A DOG4\"],"
+ "\"5\":[\"SOME WORD1\",\"SOME WORD2\",\"SOME WORD3\",\"SOME WORD4\"]}}");
Сразу после инициализации я распечатать JSON в LogCat:
Log.i(TAG, json.toString());
Моя проблема заключается в том, что JSON сцепляется вверх , Это выход:
{"Questions":{"3":["RANDOM1","RANDOM2","RANDOM3","RANDOM4"],"2":["1024","2048","512","64"],"1":["ELSYS","ELSYS2","ELSYS3","ELSYS4"],"5":["SOME WORD1","SOME WORD2","SOME WORD3","SOME WORD4"],"4":["A DOG1","A DOG2","A DOG3","A DOG4"]}}
И быть более читаемыми здесь является анализируемой информацией с JSON:
key => 3 || value => RANDOM1,RANDOM2,RANDOM3,RANDOM4
key => 2 || value => 1024,2048,512,64
key => 1 || value => ELSYS,ELSYS2,ELSYS3,ELSYS4
key => 5 || value => SOME WORD1,SOME WORD2,SOME WORD3,SOME WORD4
key => 4 || value => A DOG1,A DOG2,A DOG3,A DOG4
Как вы можете видеть строки не в правильном порядке. Я пробовал один и тот же код в обычной программе Java, и он работал правильно. Я делаю это в android, проблема там. Знаете ли вы, что может быть проблемой? (Я пытался очистки проекта)
UPDATE
Trying "[" вместо "{". Следующее исключение:
10-02 18:49:09.985: W/System.err(2263): org.json.JSONException: Unterminated array at character 18 of {"Questions":["1":["ELSYS","ELSYS2","ELSYS3","ELSYS4"],"2":["1024","2048","512","64"],"3":["RANDOM1","RANDOM2","RANDOM3","RANDOM4"],"4":["A DOG1","A DOG2","A DOG3","A DOG4"],"5":["SOME WORD1","SOME WORD2","SOME WORD3","SOME WORD4"]]}
10-02 18:49:09.985: W/System.err(2263): at org.json.JSONTokener.syntaxError(JSONTokener.java:450)
10-02 18:49:09.985: W/System.err(2263): at org.json.JSONTokener.readArray(JSONTokener.java:440)
10-02 18:49:09.985: W/System.err(2263): at org.json.JSONTokener.nextValue(JSONTokener.java:103)
10-02 18:49:09.985: W/System.err(2263): at org.json.JSONTokener.readObject(JSONTokener.java:385)
10-02 18:49:09.985: W/System.err(2263): at org.json.JSONTokener.nextValue(JSONTokener.java:100)
10-02 18:49:09.985: W/System.err(2263): at org.json.JSONObject.<init>(JSONObject.java:154)
10-02 18:49:09.985: W/System.err(2263): at org.json.JSONObject.<init>(JSONObject.java:171)
10-02 18:49:09.985: W/System.err(2263): at com.tarasoft.shop.HTTPRequests$SendRequest.doInBackground(HTTPRequests.java:36)
10-02 18:49:09.985: W/System.err(2263): at com.tarasoft.shop.HTTPRequests$SendRequest.doInBackground(HTTPRequests.java:1)
10-02 18:49:09.985: W/System.err(2263): at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-02 18:49:09.985: W/System.err(2263): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
10-02 18:49:09.985: W/System.err(2263): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-02 18:49:09.985: W/System.err(2263): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-02 18:49:09.985: W/System.err(2263): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-02 18:49:09.985: W/System.err(2263): at java.lang.Thread.run(Thread.java:856)
Update 2 Вы должны знать, что эти клавиши «1», «2» и т.д. могут быть строками тоже, так что я не использовать их для сортировки JSON, я используйте только для проверки правильности заказа. Вместо этих «1», «2» и т. Д. Будут строки.
add() дает ошибку. Возможно, вы имели в виду put()? – definera
ах да извините, немного запутался между arrayList и json. Изменили ответ – Chris
Да, это работает, но, возможно, я не был достаточно ясен. Мне нужен ключ для этих строк. Вы видите эти «1024», «512», «64» и т. Д. Ключ для них должен быть строкой. Идея отверстия заключается в том, что у меня есть вопросы и ответы на каждый вопрос. Как здесь. Если у меня возник вопрос «Каков результат для 2^6», и ответ должен быть одним из этих «1024», «512», «64». – definera