java 复杂json类型字符串解析

作为现在最流行的传输数据格式,json可谓是用的越来越普及了,在实际开发过程中,偶尔也会遇到一些复杂类型的json串解析,下面把我今天遇到的麻烦json解析过程记录下来

1.业务场景,通过接口获取数据需要把数据解析存入数据库

{
	"data": [{
		"name": "张三",
		"sex": "男",
		"age": "18",
		"good": "11",
		"class": "59",
		"list": [{
			"age": "17",
			"name": "李四",
			"sex": "女",
			"xxx": "哈哈"
		}, {
			"age": "xxx",
			"name": "xxxx",
			"sex": "xxxx",
			"xxx": "xxxx"
		}, {
			"age": "xxx",
			"name": "xxxx",
			"sex": "xxxx",
			"xxx": "xxx"
		}, {
			"age": "xxxx",
			"name": "xxxx",
			"sex": "xxx",
			"xxx": "xxxxx"
		}, {
			"age": "xxxx",
			"name": "xxxx",
			"sex": "xxxx",
			"xxx": "xxxxx"
		}, {
			"age": "xxxx",
			"name": "xxxx",
			"sex": "xxxx",
			"xxx": "xxxx"
		}, {
			"age": "xxx",
			"name": "xxx",
			"sex": "xxxx",
			"xxx": "xxxx"
		}, {
			"age": "xxxx",
			"name": "xxxx",
			"sex": 8,
			"xxx": "xxx"
		}, {
			"age": "xxxx",
			"name": "xxx",
			"sex": "xxx",
			"xxx": "xxx"
		}, {
			"age": "xxx",
			"name": "xxx",
			"sex": "xxx",
			"xxx": "xxx"
		}, {
			"age": "xxx",
			"name": "xxx",
			"sex": "xx",
			"xxx": "xxx"
		}, {
			"age": "xxx",
			"name": "xxx",
			"sex": "xx",
			"xxx": "xxx"
		}]
	}],
	"info": {
		"errCode": 0,
		"errMsg": "suc",
		"version": "9.0"
	}
}

废话不多说直接上代码
getListMap.java

public class getListMap {
    public static void main(String[] args) {
    	//json字符串
        String json = "{\"data\":[{\"name\":\"张三\",\"sex\":\"男\",\"age\":\"18\",\"good\":\"11\",\"class\":\"59\",\"list\":[{\"age\":\"17\",\"name\":\"李四\",\"sex\":\"女\",\"xxx\":\"哈哈\"},{\"age\":\"xxx\",\"name\":\"xxxx\",\"sex\":\"xxxx\",\"xxx\":\"xxxx\"},{\"age\":\"xxx\",\"name\":\"xxxx\",\"sex\":\"xxxx\",\"xxx\":\"xxx\"},{\"age\":\"xxxx\",\"name\":\"xxxx\",\"sex\":\"xxx\",\"xxx\":\"xxxxx\"},{\"age\":\"xxxx\",\"name\":\"xxxx\",\"sex\":\"xxxx\",\"xxx\":\"xxxxx\"},{\"age\":\"xxxx\",\"name\":\"xxxx\",\"sex\":\"xxxx\",\"xxx\":\"xxxx\"},{\"age\":\"xxx\",\"name\":\"xxx\",\"sex\":\"xxxx\",\"xxx\":\"xxxx\"},{\"age\":\"xxxx\",\"name\":\"xxxx\",\"sex\":8,\"xxx\":\"xxx\"},{\"age\":\"xxxx\",\"name\":\"xxx\",\"sex\":\"xxx\",\"xxx\":\"xxx\"},{\"age\":\"xxx\",\"name\":\"xxx\",\"sex\":\"xxx\",\"xxx\":\"xxx\"},{\"age\":\"xxx\",\"name\":\"xxx\",\"sex\":\"xx\",\"xxx\":\"xxx\"},{\"age\":\"xxx\",\"name\":\"xxx\",\"sex\":\"xx\",\"xxx\":\"xxx\"}]}],\"info\":{\"errCode\":0,\"errMsg\":\"suc\",\"version\":\"9.0\"}}";
        //将json字符串转化为map结构
        Map jsonToMap = JSONArray.parseObject(json,Map.class);
        System.out.println("jsonToMap"+jsonToMap);
        //JsonArray转化为list(这个转化了很久,最后找到这个方式转化)
        List<Map> jsonToList = JSONArray.parseArray(jsonToMap.get("data").toString(),Map.class);
        System.out.println(jsonToList+"jsonToList");
        for (Map map : jsonToList) {
            System.out.println(map);
            //同上面一样,只是把list里面设置为我们的实体类而已,为了更方便获取数据
            List<beans> list = JSONObject.parseArray(map.get("list").toString(), beans.class);
            for (int i= 0;i<list.size();i++){
                System.out.println("name为:"+list.get(i).getName()+"\t"+"age为:"+list.get(i).getAge()+"\t"+"xxx为:"+list.get(i).getXxx()+"\t"+"sex为:"+list.get(i).getSex());
            }

        }
    }
}

为了简便起见,有部分属性就封装为一个javabean beans.java

public class beans implements Serializable {
    private String age;
    private String name;
    private String sex;
    private String xxx;

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "beans{" +
                "age='" + age + '\'' +
                ", name='" + name + '\'' +
                ", sex=" + sex +
                ", xxx='" + xxx + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getXxx() {
        return xxx;
    }

    public void setXxx(String xxx) {
        this.xxx = xxx;
    }

    public beans(String age, String name, String sex, String xxx) {
        this.age = age;
        this.name = name;
        this.sex = sex;
        this.xxx = xxx;
    }

    public beans() {
    }


}

到这就解析获取成功了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值