JSOn解析Android

时间:2013-06-28 19:12:52

标签: android json

我想在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);

                  } 

但我只得到一个价值。我没有得到如何处理它。

3 个答案:

答案 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库,如gsonjacksoncreate 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);
}

希望这会起作用