Java中JSON的常见基本使用

本文介绍了JSON数据结构(对象和数组),展示了如何使用Java中的`JSON`库进行对象与JSON字符串之间的转换,以及如何通过`JSONField`注解控制字段的序列化和反序列化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSON的介绍JSON有两种表示结构,对象和数组。
对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。

@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class SchoolStudent {
    private Integer id;
    private String name;
    private Integer age;
    private String email;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class SchoolStu {
    private Integer id;
    private String name;
    private Integer age;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class Demo1 {
    private String id;
    private String name;
    private String age;
    @JSONField(format = "yyyy-MM-dd")
    private Date date;
}
@Data
public class Demo2 {
    private String id;
    @JSONField(name="name")
    private String userName;
    private String age;
    @JSONField(name="date")
    private Date userDate;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Demo3 {
    private String id;
    private String name;
    private String age;
    @JSONField(serialize=false,deserialize=false)
    private Date date;
}
public class TestJsonFast {
    /**
     * 测试json对象
     */
    @Test
    public void Test1() {
        SchoolStudent s1 = new SchoolStudent(1,"张三",12,"11@qq.com");
        // 对象转换为json
        String s = JSON.toJSONString(s1);
        System.out.println(s); // {"age":12,"email":"11@qq.com","id":1,"name":"张三"}
        // json转换为对象
        SchoolStu schoolStu = JSON.parseObject(s, SchoolStu.class);
        System.out.println(schoolStu);  // SchoolStu(id=1, name=张三, age=12)
    }
    /**
     * 测试map
     */
    @Test
    public void Test2() {
        HashMap<String,String> map = new HashMap<>();
        map.put("id","111");
        map.put("name","zhagnsan");
        map.put("age","24");
        map.put("email","34@qq.com");
        // map转化为JSON
        String s = JSON.toJSONString(map);
        System.out.println(s); // {"name":"zhagnsan","id":"111","age":"24","email":"34@qq.com"}
        // json转换为map
        Map<String, String> map1 = JSON.parseObject(s, new TypeReference<Map<String, String>>() {});
        System.out.println(map1); // {name=zhagnsan, id=111, age=24, email=34@qq.com}
        SchoolStudent schoolStudent = JSON.parseObject(s, SchoolStudent.class);
        System.out.println(schoolStudent);  // SchoolStudent(id=111, name=zhagnsan, age=24, email=34@qq.com)
    }
    /**
     * 测试list数组
     */
    @Test
    public void Test3() {
        SchoolStudent s1 = new SchoolStudent(1,"张三",12,"11@qq.com");
        SchoolStudent s2 = new SchoolStudent(2,"李四",9,"31@qq.com");
        SchoolStudent s3 = new SchoolStudent(3,"王五",16,"41@qq.com");
        SchoolStudent s4 = new SchoolStudent(4,"赵六",5,"99@qq.com");

        List<SchoolStudent> schoolStudents = Arrays.asList(s1, s2, s3, s4);
        // list集合转化为json
        String s = JSON.toJSONString(schoolStudents);
        System.out.println(s); // [{"age":12,"email":"11@qq.com","id":1,"name":"张三"},
        // {"age":9,"email":"31@qq.com","id":2,"name":"李四"},
        // {"age":16,"email":"41@qq.com","id":3,"name":"王五"},
        // {"age":5,"email":"99@qq.com","id":4,"name":"赵六"}]
        // json转换为list
        List<SchoolStu> schoolStus = JSON.parseArray(s, SchoolStu.class);
        List<SchoolStudent> students = JSON.parseArray(s, SchoolStudent.class);
        System.out.println(students); // [SchoolStudent(id=1, name=张三, age=12, email=11@qq.com),
        // SchoolStudent(id=2, name=李四, age=9, email=31@qq.com),
        // SchoolStudent(id=3, name=王五, age=16, email=41@qq.com),
        // SchoolStudent(id=4, name=赵六, age=5, email=99@qq.com)]
        System.out.println(schoolStus); // [SchoolStu(id=1, name=张三, age=12),
        // SchoolStu(id=2, name=李四, age=9),
        // SchoolStu(id=3, name=王五, age=16),
        // SchoolStu(id=4, name=赵六, age=5)]
    }
    /**
     * JSONField 注解 命名重塑
     */
    @Test
    public void Test4() {
        Demo1 demo1 = new Demo1("1","zhangsan","12",new Date());
        Demo1 demo2 = new Demo1("2","lisi","22",new Date());

        List<Demo1> demo1s = Arrays.asList(demo1, demo2);
        String s = JSON.toJSONString(demo1s);
        List<Demo2> demo2s = JSON.parseArray(s, Demo2.class);
        System.out.println(s);
        System.out.println(demo2s);
    }
    /**
     * 序列号,反序列化,指定字段长度
     * serialize属性:控制序列化
     * deserialize属性:控制反序列化
     * ordinal属性:指定字段的顺序
     */
    @Test
    public void Test5() {
        Demo3 demo1 = new Demo3("1","zhangsan","12",new Date());
        Demo3 demo2 = new Demo3("2","lisi","22",new Date());

        List<Demo3> demo3s = Arrays.asList(demo1, demo2);
        String s = JSON.toJSONString(demo3s);
        List<Demo3> demo3s1 = JSON.parseArray(s, Demo3.class);
        System.out.println(s);  // [{"age":"12","id":"1","name":"zhangsan"},{"age":"22","id":"2","name":"lisi"}]
        System.out.println(demo3s1);  // [Demo3(id=1, name=zhangsan, age=12, date=null), Demo3(id=2, name=lisi, age=22, date=null)]
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最好的期待,未来可期

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值