在访问服务器,返回的数据为json字符串,如何解析呢?
利用JSONObjective和JSONArray
形如
{"reUser":{"uid":"6","uname":"a","upwd":"a"}}
利用JSONObjective进行解析
JSONObject jsonObject = new JSONObject("其中放JSON字符串");//
Iterator<String> keys = jsonObject.keys();//获得所有的key,上面的例子只有reUser。迭代器完成后,指针向第一个元素之前的元素,是一个空的
if (keys.hasNext()){//检查是否有keys。Iterator 的.hasNext()判断是否存在下一个元素。第一个就是第一个是否存在
String str = jsonObject.getString(keys.next());//获取第一个key的值{"uid":"6","uname":"a","upwd":"a"}
Map<String,String> jsonMap = new HashMap<String,String>();//定义Map存放键值对
JSONObject temp = new JSONObject(str);//str ={"uid":"6","uname":"a","upwd":"a"}
Iterator<String> tempKeys = temp.keys();
while(tempKeys.hasNext()){//循环keys取出数据
String key = tempKeys.next();
jsonMap.put(key,temp.getString(key));
}
data.add(jsonMap);}
转: Map与HashMap
当数据是json的值是json数组的时候
{"reUser":[{"uid":"6","uname":"a","upwd":"a"},
{"uid":"6","uname":"a","upwd":"a"}]}
只需要将第一个key对应的数值取出,判断一下这个String的第一个元素是否是"["。
str.indexOf("[") == 0 //第一个位置是否是“[”
然后将
[{"uid":"6","uname":"a","upwd":"a"},
{"uid":"6","uname":"a","upwd":"a"}]
转为JSONArray
代码如下:
JSONArray jsonArray = new JSONArray(str);//[{"uid":"6","uname":"a","upwd":"a"},{"uid":"6","uname":"a","upwd":"a"}]
for(int i = 0;i < jsonArray.length() ; i++){
Map<String,String> jsonMap = new HashMap<String, String>();
JSONObject temp = new JSONObject(jsonArray.get(i).toString());//获得values里的key值
Iterator<String> tempKeys = temp.keys();
while(tempKeys.hasNext()){//每一个数组元素中的json键值遍历
String key = tempKeys.next();
jsonMap.put(key,temp.getString(key));//获得数组里面的values值
}
data.add(jsonMap);
}