我想在Android中解析这个JSON文件。
{
"problems": {
"1": {
"Answer": "D"
},
"2": {
"Answer": "A"
},
"3": {
"Answer": "D"
},
"4": {
"Answer": "A"
},
....
...
.....
"153": {
"Answer": "E"
}
}
}
我想在sqlitedatabase中插入带有数字的每个答案。
我试过这个:
JSONObject jObject = new JSONObject(text);
JSONObject jObjectResult = jObject.getJSONObject("problems");
JSONObject jArray = jObjectResult.getJSONObject("1");
System.out.println("Jarray---->"+jArray);
String answer = "";
for (int i = 0; i < jArray.length(); i++) {
answer = jObjectResult.getJSONObject("2").toString();
System.out.println("Answer---->"+answer);
}
但我只得到一个价值。我没有得到如何处理它。
答案 0 :(得分:2)
首先更改你的json Response,这样很容易解析它。就像这样
{
"problems": [
{
"Question":"1",
"Answer": "D"
},
{
"Question":"2",
"Answer": "A"
},
{
"Question":"3",
"Answer": "D"
},
{
"Question":"4",
"Answer": "A"
},
....
...
.....
{
"Question":"153",
"Answer": "E"
}
]
现在解析此回复
JSONObject jObject = new JSONObject(text);
JSONObject jObjectResultArray = jObject.getJSONArray("problems");
for (int i = 0; i < jObjectResultArray.length(); i++) {
JSONObject objresult = jObjectResultArray
.getJSONObject(i);
System.out.println("Question---->"+objresult.getString("Question"));)
System.out.println("Answer---->"+objresult.getString("Answer")););
}
答案 1 :(得分:0)
您的JSON模型根本没有数组。在JSON中,使用方括号[]
这里有一个Object,它有一个“problems”属性,它具有属性“1”,“2”,“3”等。你的根对象也有一个“153”属性,它具有属性“ 1“,”2“,”3“等。这些1,2,3名称中的每一个都对应于具有单个”Answer“属性和字符串值的对象。
您可以使用JSONObject.names()来获取JSONArray并在“问题”和“153”级别迭代它。
在尝试解析JSON之前,您应该学会读写JSON。
如果你的json基本上是静态的,我建议使用更好的JSON库,如gson或jackson和create a java model,而不是每次都要编写痛苦的代码来遍历结构。
答案 2 :(得分:0)
您拥有的JSON Feed没有数组。 所有节点 - &gt; “1”,“2”,“3”......“153”是对象,不形成数组。 你可以尝试这样的事情。
JSONObject jObject = new JSONObject(your_json_text);
JSONObject jObjectResult = jObject.getJSONObject("problems");
for(int i=1; i<=153; i++) {
JSONObject innerObject = jObjectResult.getJSONObject(""+i);
String answer = innerObject.getString("Answer");
System.out.println("Answer---->"+answer);
}
希望这会起作用