【问题标题】:Android: How to parse JSON Array of Array of objectsAndroid:如何解析对象数组的 JSON 数组
【发布时间】:2014-09-30 09:28:42
【问题描述】:

谁能告诉我如何在android中解析这种类型的json?

[
   [
      {
         "condition_id":"1",
         "condition_name":"Type 1 Diebetics"
      }
   ],
   [
      {
         "condition_id":"2",
         "condition_name":"Type 2 dypatise"
      }
   ]
]

谢谢

已解决

非常感谢nayoso 它对我有用。

String jsonString = "[
   [
      {
         "condition_id":"1",
         "condition_name":"Type 1 Diebetics"
      }
   ],
   [
      {
         "condition_id":"2",
         "condition_name":"Type 2 dypatise"
      }
   ]
]";
JSONArray jsonArray = new JSONArray(jsonString);
for(int i=0;i<jsonArray.length(),i++) {
   JSONArray childJsonArray = jsonArray.getJSONArray(i);
   JSONObject contentJsonObject = childJsonArray.getJSONObject(0);
   String conditionID = contentJsonObject.getString('condition_id');
   String conditionName = contentJsonObject.getString('condition_name');
   Log.i("TAG","Index "+i+" condition_id "+conditionID+" condition_name "+conditionName);
}

您可以使用 org.json 库轻松完成此操作。整个事情是一个 JSONArray;在位置 0(使用 .get(0))你有另一个 JSONArray;在位置 0 处,您有一个 JSONObject,它将键映射到值(使用 .getString())。

感谢chiastic-security也让我明白了。

【问题讨论】:

  • This 解释得差不多了。
  • 感谢您的回复,我读完了。
  • 为什么在那个问题上投了反对票?

标签: android arrays json


【解决方案1】:

您可以使用内置的 JSONArray 和 JSONObject 类

String jsonString = "[
   [
      {
         "condition_id":"1",
         "condition_name":"Type 1 Diebetics"
      }
   ],
   [
      {
         "condition_id":"2",
         "condition_name":"Type 2 dypatise"
      }
   ]
]";
JSONArray jsonArray = new JSONArray(jsonString);
for(int i=0;i<jsonArray.length(),i++) {
   JSONArray childJsonArray = jsonArray.getJSONArray(i);
   JSONObject contentJsonObject = childJsonArray.getJSONObject(0);
   String conditionID = contentJsonObject.getString('condition_id');
   String conditionName = contentJsonObject.getString('condition_name');
   Log.i("TAG","Index "+i+" condition_id "+conditionID+" condition_name "+conditionName);
}

【讨论】:

  • 我得到这个异常 org.json.JSONException: Value [{"condition_id":"2","condition_name":"Type 2 dypatise"}] at 1 of type org.json.JSONArray无法转换为 JSONObject
  • 也是致命异常:AsyncTask #1 java.lang.RuntimeException:执行 doInBackground() 时发生错误,原因是:java.lang.NoSuchMethodError: org.json.JSONArray.跨度>
【解决方案2】:

您可以使用org.json 库轻松完成此操作。整件事是JSONArray;在位置 0(使用.get(0))你有另一个JSONArray;在位置 0 处,您有一个 JSONObject,它将键映射到值(使用 .getString())。

【讨论】:

    【解决方案3】:
    JSONArray jsonarray=new JSONArray(your_data);
                    for(int i=0;i<jsonarray.length();i++)
                    {
                        JSONArray array=jsonarray.getJSONArray(i);
                        for(int j=0;j<array.length();j++)
                        {
                            JSONObject jsonObject=array.getJSONObject(0);
                            String ConditionId=jsonObject.getString("condition_id");
                            String ConditionName=jsonObject.getString("condition_name");
                        }
                    }
    

    【讨论】:

      【解决方案4】:
            JSONArray jsonArray = new JSONArray("Your Data");
            JSONArray tempArray ; 
            net.sf.json.JSONObject tempJson ;
            for(int i = 0 ; i < jsonArray.length() ; i++)
            {
                tempArray =  jsonArray.getJSONArray(i);
      
                tempJson =  tempArray.getJSONObject(0);
      
                tempJson.get("condition_id");
      
                ....data So On
            }
      

      【讨论】:

        【解决方案5】:

        试试这个

        String data = ""; //your json data string
        JSONArray jarray = new JSONArray(data);
        
        for(int i = 0;i < jarray.length(); i++) {
            JSONArray jarry1 = jarray.getJSONArray(i);
            for(int j = 0; j < jarry1.length(); j++) {
                JSONObject jobj = jarry1.getJSONObject(0);
                String ConditionId = jobj.getString("condition_id");
                String ConditionName = jobj.getString("condition_name");
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2016-11-20
          • 1970-01-01
          • 2019-12-01
          • 2019-01-14
          • 2015-06-13
          • 1970-01-01
          • 1970-01-01
          • 2016-08-09
          • 1970-01-01
          相关资源
          最近更新 更多