从永远到永远-JSON字符串解析

需求:获取传来的客户,关联的任意一辆汽车的名字。
正常情况下,我们收到的报文都是这个样子的:

{
	"name": "小明",
	"relCarList": [{
		"carName": "路虎揽胜",
		"carId": "1001"
	}, {
		"carName": "奥迪A8",
		"carId": "1002"
	}]
}

解析也很常规,这里使用的fastJson解析。

 String org="{\n" +
                "\t\"name\": \"小明\",\n" +
                "\t\"relCarList\": [{\n" +
                "\t\t\"carName\": \"路虎揽胜\",\n" +
                "\t\t\"carId\": \"1001\"\n" +
                "\t}, {\n" +
                "\t\t\"carName\": \"奥迪A8\",\n" +
                "\t\t\"carId\": \"1002\"\n" +
                "\t}]\n" +
                "}";
        JSONObject jsonObject = JSONObject.parseObject(org);
        JSONArray relCarList = jsonObject.getJSONArray("relCarList");
        JSONObject jsonObjectInner = (JSONObject) relCarList.get(1);
        String carName = jsonObjectInner.getString("carName");
        System.out.println(carName);

但是,偏偏有些傻子传报文的时候,在外层包了双引号,如:

{
	"name": "小明",
	"relCarList": "[{\"carName\":\"路虎揽胜\",\"carId\":\"1001\"},{\"carName\":\"奥迪A8\",\"carId\":\"1002\"}]"
}

那就只能这么解析了:

String org="{\n" +
                "\t\"name\": \"小明\",\n" +
                "\t\"relCarList\": \"[{\\\"carName\\\":\\\"路虎揽胜\\\",\\\"carId\\\":\\\"1001\\\"},{\\\"carName\\\":\\\"奥迪A8\\\",\\\"carId\\\":\\\"1002\\\"}]\"\n" +
                "}";
        JSONObject jsonObject = JSONObject.parseObject(org);
        String relCarList = jsonObject.getString("relCarList");
        String substring = relCarList.substring(1, relCarList.length() - 1);
        String replace = substring.replace("//", "");
        JSONArray jsonArray = JSONObject.parseArray(relCarList);
        JSONObject jsonObjectInner = (JSONObject) jsonArray.get(1);
        String carName = jsonObjectInner.getString("carName");
        System.out.println(carName);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值