Ваша строка не может быть преобразована в JSONObject
. Сначала необходимо преобразовать его в JSONArray
:
JSONArray array = new JSONArray(yourString);
После того, как вы есть, что вы можете получить JSONObject от него:
JSONObject object = array.getJSONObject(0);
значение «0», это положение вас объект» re accessing, в вашем случае у вас есть только один объект в вашем массиве, и мы можем просто добраться до него, обратившись к объекту в позиции «0» (если у вас было более одного объекта здесь, то вы получили бы доступ ко всем, используя for(), как показано ниже).
Как только вы получили свой JSONObject
, теперь вы можете выбрать любые пары ключ/вал, которые он содержит. Пример:
int myId = object.getInt("id");
String myTitle = object.getString("title");
Если вы хотите получить в массив вопросов, проведенных в этом объекте, теперь снова нужно создать JSONArray от него:
JSONArray questionsArray = object.getJSONArray("questions");
В этом случае, мы имеем больше чем один JSONObject
в массиве, поэтому мы создаем для() цикл, чтобы получить доступ ко всему там:
for (int i = 0; i < questionsArray.length(); i++) {
JSONObject questionObject = questionsArray.getObject(i);
String myQuestion = questionObject.getString("question");
String myOptions = questionObject.getString("options");
}
BTW ваша строка JSON является недействительным, а именно «опции» ключ/Vals:
"options"frown emoticon"Yes","No"
Должно быть так:
"options": "frown emoticon\"Yes\",\"No\""
UPDATE 1: ваш JSONException
, вероятно, бросали из-за искаженной строки JSON. Он должен выглядеть следующим образом:
[
{
"id": 46,
"title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"description": "Suspendisse lacinia dui ut metus ullamcorper,",
"start_date": "October 26, 2015",
"end_date": "January 1, 2016",
"questions": [
{
"question": "<p>Proin aliquam augue eu ipsum viverra,<\\/p>\\n",
"options": "frownemoticon\"Yes\",\"No\""
},
{
"question": "<p>Morbipharetraaugueeununcporta<\\/p>\\n",
"options": "frownemoticon\"One\",\"Two\",\"Three\",\"All\""
},
{
"question": "<p>Innecduipulvinar,ultrices<\\/p>\\n",
"options": "frownemoticon\"Yes\",\"No\",\"Other\""
}
]
}
]
UPDATE 2: в случае, если вы читаете из строки фиксированной JSon где-то в вашем приложении, то строка должна выглядеть следующим образом (обратите внимание, что в этом случае все цитаты знак должен быть символом обратной косой черты):
String yourString = "[{\"id\":46,\"title\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit\",\"description\":\"Suspendisse lacinia dui ut metus ullamcorper,\",\"start_date\":\"October 26, 2015\",\"end_date\":\"January 1, 2016\",\"questions\":[{\"question\":\"<p>Proin aliquam augue eu ipsum viverra,<\\\\/p>\\\\n\",\"options\":\"frownemoticon\\\"Yes\\\",\\\"No\\\"\"},{\"question\":\"<p>Morbipharetraaugueeununcporta<\\\\/p>\\\\n\",\"options\":\"frownemoticon\\\"One\\\",\\\"Two\\\",\\\"Three\\\",\\\"All\\\"\"},{\"question\":\"<p>Innecduipulvinar,ultrices<\\\\/p>\\\\n\",\"options\":\"frownemoticon\\\"Yes\\\",\\\"No\\\",\\\"Other\\\"\"}]}]";
Это не JSONObject, это JSONArray .... JSONArray array = new JSONArray (yourString); – mjp66
Возможный дубликат [Как разобрать JSON в Java] (http://stackoverflow.com/questions/2591098/how-to-parse-json-in-java) – Selvin