我在android中做一个项目。
我有一个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"frown emoticon"Yes","No"]
},
{
"question":"<p>Morbi pharetra augue eu nunc porta<\\\/p>\\n",
"options"frown emoticon"One","Two","Three","All"]
},
{
"question":"<p>In nec dui pulvinar, ultrices <\\\/p>\\n",
"options"frown emoticon"Yes","No","Other"]
}]
}
]"
任何人都可以帮我将此字符串转换为JSONobject
吗?
答案 0 :(得分:2)
这不是JSONObject
。它是JSONArray
。
您可以获得如下所示的JSONArray
。
JSONArray jsonArray = new JSONArray(responseString);
从数组中,您可以获得JSONObject
,如下所示。
for(int i = 0 ; i< jsonArray.length() ; i++){
// This will get first JSONObject from JSONArray.
JSONObject jObject = jsonArray.getJSONObject(i);
// Get all key from array using JSONObject.
int id = jObject.getInt("id");
String id = jObject.getString("title");
String id = jObject.getString("description");
String id = jObject.getString("start_date");
String id = jObject.getString("end_date");
// Get Inner question JSONArray
JSONArray queArray = jObject.getJSONArray("questions");
for(int j = 0 ; j< queArray.length() ; j++){
String question = queArray.getJSONObject(j).getString("question");
String options= queArray.getJSONObject(j).getString("options");
}
}
答案 1 :(得分:2)
您的字符串无法转换为JSONObject
。您首先需要将其转换为JSONArray
:
JSONArray array = new JSONArray(yourString);
完成后,您可以从中获取JSONObject:
JSONObject object = array.getJSONObject(0);
值'0'是您正在访问的对象的位置,在您的情况下,您的数组中只有一个对象,我们可以通过访问'0'位置的对象来获取它(如果您这里有多个对象,然后你使用for()循环访问它们,如下所示。)
一旦你获得了JSONObject
,你现在可以选择它包含的任何键/值对。例如:
int myId = object.getInt("id");
String myTitle = object.getString("title");
如果你想了解这个对象中的问题数组,你现在需要再次创建一个JSONArray:
JSONArray questionsArray = object.getJSONArray("questions");
在这种情况下,我们在数组中有多个JSONObject
,因此我们创建一个for()循环来访问那里的所有内容:
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字符串无效,特别是“options”key / vals:
"options"frown emoticon"Yes","No"
应该是这样的:
"options": "frown emoticon\"Yes\",\"No\""
更新1:由于json字符串损坏,您的JSONException
可能会被抛出。它应该是这样的:
[
{
"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\""
}
]
}
]
更新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\\\"\"}]}]";
答案 2 :(得分:1)
JSONArray jsonArray = new JSONArray(yourString);
JSONObject obj=jsonArray.getJsonObject(0);
答案 3 :(得分:1)
正如其他人所说,这是一个JSON数组。但是,如果你要做的就是解析它,我建议你使用GSON库,它处理将整个JSON字符串解析为你需要的Java类。您可以使用注释让转换器知道类中的哪些字段映射到相应的JSON键。这非常有用。