JSON转换工具---jackson

1.json传递中和javaBean对象的关系

== 打印出来的字符串,对象和键值集合用{}, 数组和用[]==

2.json的转换

总测试类:以下转换都为单元测试方法

public class ObjectMapperTest {
    private ObjectMapper mapper = new ObjectMapper();
}
<1>json和对象的转换
 /*
        1.User对象转json, json转User对象
          json字符串 = {"name":"张三","age":23}
          user对象 = User{name='张三', age=23}
     */
    @Test
    public void test01() throws Exception {
        //对象转化为Json字符串
        Student student = new Student("张三", 20, new Date());
        String json = mapper.writeValueAsString(student);
        System.out.println("json字符串:" + json);
        //json转化为对象
        Student stu = mapper.readValue(json, Student.class);
        System.out.println("java对象:" + stu);
    }

打印结果:
---------------------------------------------------------------------
json字符串:{"name":"张三","age":20}
java对象:Student{name='张三', age=20, birthday=null}
<2>json和map的转换
 /*
         2.map<String,String>转json, json转map<String,String>
          json字符串 = {"姓名":"张三","性别":"男"}
          map对象 = {姓名=张三, 性别=男}
     */
    @Test
    public void test02() throws Exception {
        //对象转化为Json字符串
        HashMap<String,String> map = new HashMap<>();
        map.put("姓名","张三");
        map.put("年龄","20");
        String json = mapper.writeValueAsString(map);
        System.out.println("json字符串:" + json);
        //json转化为对象
        HashMap hashMap = mapper.readValue(json, HashMap.class);
        System.out.println(hashMap);

    }

打印结果:
---------------------------------------------------------------------
json字符串:{"姓名":"张三","年龄":"20"}
{姓名=张三, 年龄=20}
 /*
        3.map<String,User>转json, json转map<String,User>
          json字符串 = {"黑马一班":{"name":"张三","age":23},"黑马二班":{"name":"李四","age":24}}
          map对象 = {黑马一班=User{name='张三', age=23}, 黑马二班=User{name='李四', age=24}}
     */
    @Test
    public void test03() throws Exception {
        //对象转化为Json字符串
        HashMap<String, Student> map = new HashMap<>();
        Student student1 = new Student("张三", 20);
        Student student2 = new Student("李四", 21);
        map.put("一班",student1);
        map.put("二班",student2);
        String json = mapper.writeValueAsString(map);
        System.out.println("json字符串:" + json);
        //json转化为对象
        HashMap<String,Student> hashMap = mapper.readValue(json, new TypeReference<HashMap<String, Student>>() {
        });
        System.out.println(hashMap);
    }

打印结果:
---------------------------------------------------------------------
json字符串:{"一班":{"name":"张三","age":20},"二班":{"name":"李四","age":21}}
{一班=Student{name='张三', age=20, birthday=null}, 二班=Student{name='李四', age=21, birthday=null}}
<3>json和List的转换
 /*
        4.List<String>转json, json转 List<String>
          json字符串 = ["张三","李四"]
          list对象 = [张三, 李四]
     */
    @Test
    public void test04() throws Exception {
        //对象转化为Json字符串
        List<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        String json = mapper.writeValueAsString(list);
        System.out.println("json字符串:" + json);
        //json转化为对象
        List list1 = mapper.readValue(json, List.class);
        System.out.println(list1);
    }

打印结果:
-----------------------------------------------------------------------------
json字符串:["张三","李四"]
[张三, 李四]
 /*
        5.List<User>转json, json转List<User>
          json字符串 = [{"name":"张三","age":23},{"name":"李四","age":24}]
          list对象 = [User{name='张三', age=23}, User{name='李四', age=24}]
     */
    @Test
    public void test05() throws Exception {
        //对象转化为Json字符串
        ArrayList<Student> list = new ArrayList<>();
        Student student1 = new Student("张三", 20);
        Student student2 = new Student("李四", 21);
        list.add(student1);
        list.add(student2);
        String json = mapper.writeValueAsString(list);
        System.out.println(json);
        //json转化为对象
        //匿名内部类可根据我们指定的类型进行转换
        ArrayList<Student> list1 = mapper.readValue(json,new TypeReference<ArrayList<Student>>(){} );
        System.out.println(list1);
    }


打印结果:
-------------------------------------------------------------------------------
[{"name":"张三","age":20},{"name":"李四","age":21}]
[Student{name='张三', age=20, birthday=null}, Student{name='李四', age=21, birthday=null}]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陪雨岁岁年年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值