【ObjectMapper/Json】Json转字符串数组和对象数组

【ObjectMapper的依赖】

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.4</version>
        </dependency>

 

【待处理的json文】

复制代码
{
    "name": "Moft", 
    "count": 100, 
    "nicknames": [
        "Microsoft", 
        "moft", 
        "Mft", 
        "Bill's company"
    ], 
    "emps": [
        {
            "id": 1, 
            "name": "Andy"
        }, 
        {
            "id": 2, 
            "name": "Bill"
        }, 
        {
            "id": 3, 
            "name": "Cindy"
        }, 
        {
            "id": 4, 
            "name": "Dougalas"
        }
    ]
}
复制代码

【读取和处理程序】

复制代码
        RestTemplate restTemplate = new RestTemplate();
        String json = restTemplate.getForObject("http://localhost:8080/showWelcome/",String.class);

        ObjectMapper mapper = new ObjectMapper();
        JsonNode root = mapper.readTree(json);

        JsonNode nickNode=root.get("nicknames");
        // json转数组
        String json1=nickNode.toString();
        System.out.println(json1);
        List<String> ls1 = mapper.readValue(json1, List.class);
        for(String nick:ls1){
            System.out.println(nick);
        }

        JsonNode empsNode=root.get("emps");
        // json转对象数组
        String json2=empsNode.toString();
        System.out.println(json2);
        List<Employee> ls2 = mapper.readValue(json2, new TypeReference<List<Employee>>(){});
        for(Employee employee:ls2){
            System.out.println(employee);
        }
复制代码

【Employee类】

复制代码
package com.hy;

public class Employee {
    private int id;
    private String name;

    public Employee() {
        this(-1, "");
    }

    public Employee(int id,String name) {
        this.id=id;
        this.name=name;
    }

    public String toString(){
        return "EMP:"+id+"_"+name;
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
复制代码

【输出】

复制代码
["Microsoft","moft","Mft","Bill's company"]
Microsoft
moft
Mft
Bill's company


[{"id":1,"name":"Andy"},{"id":2,"name":"Bill"},{"id":3,"name":"Cindy"},{"id":4,"name":"Dougalas"}]
EMP:1_Andy
EMP:2_Bill
EMP:3_Cindy
EMP:4_Dougalas
复制代码

END

 

posted @   逆火狂飙  阅读(1042)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2020-03-03 zt:HttpUrlConnection使用详解
2020-03-03 使用HttpUrlConnection访问www.163.com遇到503问题,用设置代理加以解决
2019-03-03 【Canvas与艺术】模拟五个桌球在球桌上进行完全弹性碰撞
2019-03-03 [Canvas与艺术]带尾迹的下雪效果
2019-03-03 【Canvas与诗词】夏日绝句 李清照
2019-03-03 【Canvas与光阑】四条C形色带填满一个圆/环形
2019-03-03 【Canvas与艺术】自制朝阳电脑桌面(1920*1080)
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示