这是我的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获得错误。请帮我解决获取错误并在数组中存储值。谢谢。
答案 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有正确的答案。