{"meta":{"result":"success","statusCode":"200","code":"200","message":null,"detailMessage":null},"data":[{"name":"张大毛"},{"age":"2"},{"sex":"0"}]}
如上述数据,这个是请求某个http之后返回的数据,那么一般来说这种数据都是以String的格式接收的,接收到之后我们来看一下格式化后
{
"meta": {
"result": "success",
"statusCode": "200",
"code": "200",
"message": null
},
"data": [
{
"name": "张大毛"
},
{
"age": "2"
},
{
"sex": "0"
}
]
}
发现这个就是个json数据啊,但是用啥工具类都不是很好用,要么写起来很麻烦要么解析出来乱七八糟
这时候又不是很想显得自己很菜怎么办,看这个虽然菜但是好使的代码
// 返回的数据是一个string
String data = httpxxx;
//用到了这个工具 com.alibaba.druid.support.json.JSONParser;
JSONParser parser = new JSONParser(data);
// 用linkedhashmap接收格式化的对象
LinkedHashMap<String, Object> parseMap = (LinkedHashMap<String, Object>) parser.parseMap();
//parseMap在这个时候里面装了key:meta,key:data,对,拆成了俩,跟一下debug可以发现他们实际上已经被分开了,根据这个思路我们来根据key取值就很容易想到了
// 将返回数据里的data拿出来转成list
List<Object> object = (List<Object>) parseMap.get("data");
// 建立数组备用
String[] split = null;
// 这个hashmap存储的是真正需要的数据,提前建立出来
Map<String, String> dataMap = new HashMap<>();
for (Object ob : object) {
// 把里面的数据格式慢慢分解
String sub = ob.toString().substring(1, ob.toString().length() - 1);
split = sub.split("=");
// 用刚才的map和Array进行数据拼装
dataMap.put(split[0], split[1]);
}
这时候已经解析完了
dataMap里面已经变成了真正的map数据,复杂字符串不好处理,map还不好处理么
for (String str : dataMap.keySet()) {
//值已经取到了,该做什么就做什么
}