[会写代码的健身爱好者成长史]之FastJson用法

本文详细介绍了阿里巴巴的FastJson框架,用于Java对象与JSON字符串之间的转换。通过示例展示了如何使用JSON.toJSONString进行序列化,将User对象、List<User>集合和Map<String, User>转化为JSON字符串,以及如何利用JSON.parseObject和JSON.parseArray进行反序列化,将JSON字符串还原为Java对象和集合。同时,还提到了@JSONField注解的使用,包括name、format、ordinal和serialize/deserialize属性,帮助自定义序列化过程。

        FastJson阿里巴巴开源的轻量级Json框架,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。

添加依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.66</version>
        </dependency>

序列化,将对象,list,map转化为String类型的json字符串

1.JSON.toJSONString

        // JSON.toJSONString可以将java对象(user)转化为String类型的json字符串
        User user = new User(1,"张三",18,"江苏");
        String s = JSON.toJSONString(user);
        System.out.println(s);


        //将list集合转化为String类型的json字符串,也是调用JSON.toJSONString
        List<User> list = new ArrayList<>();
        list.add(new User(1,"张三",18,"徐州"));
        list.add(new User(2,"李四",19,"徐州"));
        String s = JSON.toJSONString(list);
        System.out.println(s);

        
        //将map转化为String类型的json字符串,也是调用JSON.toJSONString
        HashMap<String, User> userMap = new HashMap<>();
        userMap.put("user1",new User(1,"张三",18,"徐州"));
        userMap.put("user2",new User(2,"李四",19,"徐州"));
        String s1 = JSON.toJSONString(userMap);

反序列化,将json格式的字符串转化为对象,list或map

 JSON.parseObject

        // JSON.parseObject可以将String类型的json字符串转化为java对象(user)
        User user = new User(1,"张三",18,"江苏");
        //将user对象转化为json格式的字符串
        String s2 = JSON.toJSONString(user);
        //再将json的字符串转化为user对象
        User user1 = JSON.parseObject(s2, User.class);
        System.out.println(user1);

 JSON.parseArray

可以将String类型的Json字符串转化为list集合


        List<User> list = new ArrayList<>();
        list.add(new User(1,"张三",18,"徐州"));
        list.add(new User(2,"李四",19,"徐州"));
        String s = JSON.toJSONString(list);
        List<User> objects = JSON.parseArray(s, User.class);
        System.out.println(objects);

map的反序列化,比较特殊,虽然也调用 JSON.parseObject这个方法,但是还是有点小区别的,具体看代码

        HashMap<String, User> userMap = new HashMap<>();
        userMap.put("user1",new User(1,"张三",18,"徐州"));
        userMap.put("user2",new User(2,"李四",19,"徐州"));
        String s1 = JSON.toJSONString(userMap);
        //因为map的特殊性,再调用JSON.parseObject时,第二个参数要这么传,new TypeReference<Map<String, User>>() {}
        Map<String, User> stringUserMap = JSON.parseObject(s1, new TypeReference<Map<String, User>>() {});
        System.out.println(stringUserMap);

 

@JSONField注解使用

name:指序列化的时候指定属性名,name变成studentName

format:指Date类型 序列化的时候指定日期类型的格式

ordinal:规定字段的顺序

serialize/deserialize:指定字段不序列化

    //name:指序列化的时候指定属性名,name变成studentName
    @JSONField(name = "studentName")
    public  String name;
    
    //format:指序列化的时候指定日期类型的格式
    @JSONField(format = "yyyy-MM-dd",ordinal = 1,serialize = false)
    private Date birthday;
"user1":{"address":"徐州","age":18,"birthday":"2021-10-28","id":1,"studentName":"张三"}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值