Jackson使用攻略

对象转json

        User user = new User();
        user.setId(12345622L).setName("张三").setSex("男").setStatus(1);
        //这里的writerWithDefaultPrettyPrinter方法可以让json格式化更加美观
        String s = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(user);
        System.out.println("对象转json: " + s);

json转对象

        User user1 = objectMapper.readValue(s, User.class);
        System.out.println("json转对象: " + user);

List,Map,ArrayList...集合之间互换

 1. 第一种List和json数组之间互相转换

        //List集合转json集合对象
        List<User> list = new ArrayList<User>();
        for (int i = 1; i < 4; i++) {
            User u = new User();
            u.setId(Long.valueOf(i)).setName("张三").setSex("男").setStatus(i);
            list.add(u);
        }
        String s1 = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(list);
        System.out.println("List集合对象转json集合对象: " + s1);


        //json集合对象转List集合
        JavaType javaType =         
   objectMapper.getTypeFactory().constructParametricType(List.class, User.class);
        List<User> userList = objectMapper.readValue(s1, javaType);
        System.out.println("json集合对象转List集合: " + userList.toString());

2.第二种相对第一种比较简单,不用获取JavaType来转换

        //List集合转json集合对象
        List<User> list = new ArrayList<User>();
        for (int i = 1; i < 4; i++) {
            User u = new User();
            u.setId(Long.valueOf(i)).setName("张三").setSex("男").setStatus(i);
            list.add(u);
        }
        String s1 = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(list);
        System.out.println("List集合对象转json集合对象: " + s1);

        //集合转json超简单的方式
        List<User> userList1 = objectMapper.readValue(s1, new TypeReference<List<User>>() {
        });
        System.out.println("有手就行的转java集合方法: " + userList1);

3.最后写一个Map集合的转换

 //Map集合转json对象
        Map<String, User> map = new HashMap<>();
        for (int i = 1; i < 4; i++) {
            User u = new User();
            u.setId(Long.valueOf(i)).setName("张三").setSex("男").setStatus(i);
            map.put(String.valueOf(i), u);
        }
        String maps = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
        System.out.println("Map集合转json对象: " + maps);

        //json对象转Map集合
        MapType mapType = objectMapper.getTypeFactory().constructMapType(HashMap.class, String.class, User.class);
        Map<String, User> userMap = objectMapper.readValue(maps, mapType);
        System.out.println("json对象转Map集合: " + userMap);

树模型(操作局部的属性和组装json对象)

  /**
         * 树模型处理json
         *
         */
        //构建 ObjectNode  添加属性
        ObjectNode objectNode = objectMapper.createObjectNode();
        objectNode.put("name", "张三");
        objectNode.put("status", 1);
        objectNode.put("phone", "1767111");

        ObjectNode addressNode = objectMapper.createObjectNode();
        addressNode.put("zip", "000000");
        addressNode.put("street", "Road NanJing");


        /**
         *设置子节点
         *  此处的 address 是 User的一个属性 (private Address address)
         *  属性嵌套使用,没有这个需求可以去掉
         */
        objectNode.set("address", addressNode);
        System.out.println("构建 ObjectNode:\n" + objectNode.toString());  //输出的是json格式

        //有两种通过下标获取值
        // 1.通过 path 查找节点获取值
        String name = objectNode.path("name").asText();
        JsonNode address = objectNode.path("address");
        System.err.println(address.toString());
        String s3 = address.toString();
        System.out.println("name=" + name + "," + "address=" + s3);

        //2.通过get获取节点key的值
        String s2 = objectNode.get("address").get("street").asText();
        System.out.println("通过get获取objectNode的值:" + s2);

        //读取json,jsonNode相当于的值相当于json字符串
        JsonNode jsonNode = objectMapper.readTree(objectNode.toString());
        System.out.println("Json 转 JsonNode:\n" + jsonNode);

        //JsonNode 转换成 java 对象
        User user2 = objectMapper.treeToValue(objectNode, User.class);
        System.out.println("JsonNode 转对象:\n" + user2);

        //java 对象转换成 JsonNode
        JsonNode node = objectMapper.valueToTree(user2);
        System.out.println("对象转 JsonNode:\n" + node);

 总结:无

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值