如何将json值放到Android数组中?

时间:2016-10-25 07:29:44

标签: android json

这是我的json字符串result =

  {"a1":[{"Phone":"+959797715387","Pin":"744881"}],"a2":[{"Phone":"09772455728","Pin":"924543"}]}

我用这段代码解析json。

  try {
  JSONObject reader = new JSONObject(result);
  JSONObject a1  = reader.getJSONObject("a1");
  String Phone = a1.getString("Phone");
  JSONObject a2  = reader.getJSONObject("a2");
  String Pin = a2.getString("Pin");
  txv1.setText(Phone+" "+Pin);  
  }            
  catch (Exception e) {
  // TODO: handle exception
  txv1.setText("Error");
  }

最终结果是从try / catch获得错误。请帮我解决获取错误并在数组中存储值。谢谢。

3 个答案:

答案 0 :(得分:2)

您的问题因为a1& a2不是JSONObject而是JSONArray,所以你可以尝试这个解决方案:

public void parseJSON(String result) {
    try {
        JSONObject reader = new JSONObject(result);

        //this for value on a1
        JSONArray a1 = reader.getJSONArray("a1");
        String Phone_a1 = a1.getJSONObject(0).getString("Phone");
        String Pin_a1 = a1.getJSONObject(0).getString("Pin");

        //this for value on a2
        JSONArray a2 = reader.getJSONArray("a2");
        String Phone_a2 = a2.getJSONObject(0).getString("Phone");
        String Pin_a2 = a2.getJSONObject(0).getString("Pin");
    } catch (Exception e) {
        //your catch handle
    }
}

答案 1 :(得分:1)

尝试使用类似的东西

try {
    JSONObject reader = new JSONObject(result);
    JSONArray array1 = reader.getJSONArray("a1");
    JSONObject a1_1 = array1.getJSONObject(0);
    String phone = a1_1.getString("Phone");
    String pin = a1_1.getString("Pin");
    //same thing for the object a2
} catch (JSONException e){
    e.printStackTrace();
}

您应该了解JSON对象和JSON数组之间的区别,这里是对JSON的基本介绍:http://www.w3schools.com/js/js_json_syntax.asp

答案 2 :(得分:0)

在你的json对象中,a1是一个有1个元素的数组,所以你不能通过getJSONObject方法得到json数组,而是做getJSONArray
MatPag有正确的答案。