-1

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

                  } 

但我只得到一个值。我不知道如何处理它。

4

3 回答 3

2

首先更改您的json响应,以便解析它。像这样

 {
"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")););


            }
于 2013-06-28T19:24:40.117 回答
0

您的 JSON 模型根本没有数组。在 JSON 中,数组用方括号指定[]

在这里,你有一个对象,它有一个“问题”属性,它有属性“1”、“2”、“3”等。你的根对象还有一个“153”属性,它有属性“1”, “2”、“3”等。这 1、2、3 个名称中的每一个都对应于具有单个“Answer”属性和字符串值的对象。

您可以使用 JSONObject.names() 来获取 JSONArray 并在“问题”和“153”级别对其进行迭代。

在尝试解析 JSON 之前,您应该学习阅读和编写 JSON。

如果您的 json 基本上是静态的,我建议您使用更好的 JSON 库,例如gsonjackson,并创建一个 java 模型,而不是每次都编写痛苦的代码来遍历结构。

于 2013-06-28T19:22:41.687 回答
0

您拥有的 JSON 提要没有数组。所有节点 -> “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);
}

希望这会奏效

于 2013-06-28T19:32:26.823 回答