java中关于解析稍复杂json的字符串为map

{"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()) {
    //值已经取到了,该做什么就做什么
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值