JSON与Java之间的转换

JSON工具包使用的是com.alibaba.fastjson

	<dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
    </dependencies>

测试实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int id;
    private String name;
    private int age;
}

JSON.toJSONString():将实体类对象转换为JSON字符串

JSON.parseObject():将JSON字符串转化为实体类

public class JSONTest {
    public static void main(String[] args) {
        List<User> list = new ArrayList<>();
        User user = new User();
        user.setId(0);
        user.setName("jack");
        user.setAge(0);
        User user1 = new User();
        user1.setId(1);
        user1.setName("jack1");
        user1.setAge(10);
        User user2 = new User();
        user2.setId(2);
        user2.setName("jack2");
        user2.setAge(20);
        User user3 = new User();
        user3.setId(3);
        user3.setName("jack3");
        user3.setAge(30);
        list.add(user);
        list.add(user1);
        list.add(user2);
        list.add(user3);

        String s = JSONObject.toJSONString(user);
        System.out.println(s);
        String s1 = JSON.toJSONString(user);
        System.out.println(s1);

        System.out.println("----------------------");

        System.out.println(JSONObject.parseObject(s, User.class));
        System.out.println(JSON.parseObject(s, User.class));
        System.out.println(user);
        System.out.println("----------------------");
        Object o = JSONObject.toJSON(list);
        System.out.println(o);
        System.out.println(JSONObject.toJSONString(list));

    }
}

测试结果:

{"age":0,"id":0,"name":"jack"}
{"age":0,"id":0,"name":"jack"}
----------------------
User(id=0, name=jack, age=0)
User(id=0, name=jack, age=0)
User(id=0, name=jack, age=0)
----------------------
[{"name":"jack","id":0,"age":0},{"name":"jack1","id":1,"age":10},{"name":"jack2","id":2,"age":20},{"name":"jack3","id":3,"age":30}]
[{"age":0,"id":0,"name":"jack"},{"age":10,"id":1,"name":"jack1"},{"age":20,"id":2,"name":"jack2"},{"age":30,"id":3,"name":"jack3"}]

JSONObject.parseObject():将JSON字符串转化为实体类对象,传入参数为JSON字符串以及实体类的类型

即可转化list数组,也可转化map

public class JSONTest01 {
    public static void main(String[] args) {
        String str = "{\"age\":0,\"id\":0,\"name\":\"jack\"}";
        System.out.println(JSONObject.parseObject(str, User.class));
        System.out.println("====================================");
        String strList = "[{\"age\":0,\"id\":0,\"name\":\"jack\"}," +
                "{\"age\":10,\"id\":1,\"name\":\"jack1\"}," +
                "{\"age\":20,\"id\":2,\"name\":\"jack2\"}," +
                "{\"age\":30,\"id\":3,\"name\":\"jack3\"}]";
        List list0 = JSONObject.parseObject(strList, List.class);
        list0.stream().map(x->JSONObject.parseObject(JSONObject.toJSONString(x),User.class)).forEach(System.out::println);
        System.out.println("------------------------------------");
        list0.stream().map(x->JSONObject.toJSONString(x)).forEach(System.out::println);
        System.out.println("------------------------------------");

        List list1 = JSON.parseObject(strList, List.class);
        for (int i = 0; i < list1.size(); i++) {
            System.out.println(JSONObject.parseObject(JSONObject.toJSONString(list1.get(i)),User.class));
        }
        System.out.println("====================================");
        String strMap = "{\"001\":{\"age\":0,\"id\":0,\"name\":\"jack\"}," +
                "\"002\":[{\"$ref\":\"$.001\"},{\"age\":10,\"id\":1,\"name\":\"jack1\"}]," +
                "\"003\":[{\"$ref\":\"$.002\"},{\"age\":20,\"id\":2,\"name\":\"jack2\"}]," +
                "\"004\":[{\"$ref\":\"$.003\"},{\"age\":30,\"id\":3,\"name\":\"jack3\"}]}";
        Map map = JSONObject.parseObject(strMap, Map.class);
        Iterator iterator = map.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry next = (Map.Entry) iterator.next();
            System.out.println(next.getKey()+"::::::::::::::::::"+next.getValue());
        }
    }
}

测试结果:

User(id=0, name=jack, age=0)
====================================
User(id=0, name=jack, age=0)
User(id=1, name=jack1, age=10)
User(id=2, name=jack2, age=20)
User(id=3, name=jack3, age=30)
------------------------------------
{"name":"jack","id":0,"age":0}
{"name":"jack1","id":1,"age":10}
{"name":"jack2","id":2,"age":20}
{"name":"jack3","id":3,"age":30}
------------------------------------
User(id=0, name=jack, age=0)
User(id=1, name=jack1, age=10)
User(id=2, name=jack2, age=20)
User(id=3, name=jack3, age=30)
====================================
001::::::::::::::::::{"name":"jack","id":0,"age":0}
002::::::::::::::::::[{"name":"jack","id":0,"age":0},{"name":"jack1","id":1,"age":10}]
003::::::::::::::::::[[{"name":"jack","id":0,"age":0},{"name":"jack1","id":1,"age":10}],{"name":"jack2","id":2,"age":20}]
004::::::::::::::::::[[[{"name":"jack","id":0,"age":0},{"name":"jack1","id":1,"age":10}],{"name":"jack2","id":2,"age":20}],{"name":"jack3","id":3,"age":30}]

JSON.parseArray():用于处理数据比较多的,用[]包裹的数据

传入参数为JSON字符串。如果传参加入实体类的类型,则返回实体类的集合;不传参实体类类型则返回JSON字符串的集合

public class JSONTest02 {
    public static void main(String[] args) {
        String strList = "[{\"age\":0,\"id\":0,\"name\":\"jack\"}," +
                "{\"age\":10,\"id\":1,\"name\":\"jack1\"}," +
                "{\"age\":20,\"id\":2,\"name\":\"jack2\"}," +
                "{\"age\":30,\"id\":3,\"name\":\"jack3\"}]";
        List<User> list = JSON.parseArray(strList, User.class);
        list.stream().forEach(System.out::println);
        System.out.println("----------------------------------------------");
        list.stream().map(x -> JSON.toJSONString(x)).forEach(System.out::println);
        System.out.println("==============================================");
        JSON.parseArray(strList,User.class).stream().forEach(System.out::println);
    }
}

测试结果:

User(id=0, name=jack, age=0)
User(id=1, name=jack1, age=10)
User(id=2, name=jack2, age=20)
User(id=3, name=jack3, age=30)
----------------------------------------------
{"age":0,"id":0,"name":"jack"}
{"age":10,"id":1,"name":"jack1"}
{"age":20,"id":2,"name":"jack2"}
{"age":30,"id":3,"name":"jack3"}
==============================================
User(id=0, name=jack, age=0)
User(id=1, name=jack1, age=10)
User(id=2, name=jack2, age=20)
User(id=3, name=jack3, age=30)
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值