Jackson用法

Spring Boot 默认集成使用了Jackson,既然是SpringBoot的选择,那么肯定有其过人的优势。所以,这边简单记录下Jackson的用法。方法自己日用复习使用,记录的比较简单,欢迎留贴讨论。

  • Jackson用法

    • 1.Java pojo实体类
    • 2.Java对象转json字符串
      • 2.1简单转换成字符串格式输出
      • 2.2带有jackson注解的javabean序列化
    • 3.Json转java对象

1.Java pojo实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Pet {private String name;private Integer age;
}@Data
public class People {private String name;private int age;private boolean isAdult;private double salary;private Date birthday;private List<Pet> pets;private Map<String,String> others;
}public class PeopleFactory {public static People getPeople() throws ParseException {People people=new People();people.setName("张三");people.setAge(26);people.setAdult(true);people.setSalary(7800.12);people.setBirthday(DateUtils.parseDate("1993-08-08 18:18:18","yyyy-MM-dd HH:mm:ss"));people.setPets(Arrays.asList(new Pet("小黄",1),new Pet("小蓝",2)));Map<String,String> map=new HashMap<>();map.put("爱好","下棋");map.put("女友","小美");people.setOthers(map);return people;}
}

2.Java对象转json字符串

2.1简单转换成字符串格式输出
public static void main(String[] args) throws Exception {People people = PeopleFactory.getPeople();//jackson的核心,通过mapper来进行序列化和反序列化ObjectMapper mapper=new ObjectMapper();//序列化,write相关方法!write可以是序列化输出多种格式,当然这边最常用就是写成为String返回前端String jsonStr1 = mapper.writeValueAsString(people);System.out.println(jsonStr1);System.out.println("===============================================================");//设置序列化后的格式,INDENT_OUTPUT表示缩进输出,true表示试该配置生效mapper.configure(SerializationFeature.INDENT_OUTPUT,true);String jsonStr2 = mapper.writeValueAsString(people);System.out.println(jsonStr2);}

2.2带有jackson注解的javabean序列化
上面的实体类中这两个属性添加注解
@JsonProperty(value = "myName")
private String name;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date birthday;

再看输出:

其他注解参考:https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations

3.Json转java对象

主要掌握ObjectNode和ArrayNode的相关方法就可以了。有点类似以前的dom树

public static void main(String[] args) throws Exception {String json = "{\"age\":26,\"salary\":7800.12,\"birthday\":\"1993-08-08 10:18:18\",\"pets\":[{\"name\":\"小黄\",\"age\":1},{\"name\":\"小蓝\",\"age\":2}],\"others\":{\"爱好\":\"下棋\",\"女友\":\"小美\"},\"adult\":true,\"myName\":\"张三\"}";ObjectMapper mapper = new ObjectMapper();//反序列化都是ObjectMapper.read相关方法//第一种方式,如果有对应的javaBean接收,可以这样,直接做People people = mapper.readValue(json, People.class);System.out.println(people);//第二种方式,如果没有对应的javaBean接收,可以用ObjectNode接收ObjectNode objectNode = mapper.readValue(json, ObjectNode.class);//jackson中json对象就是一个个node//查找node和值得几种方式区别/** 1.findValue   从当前节点开始查询子孙节点,只要有匹配的节点就返回该节点否则返回null* 2.get         仅查询当前节点是否有匹配的节点* 3.with        仅查询当前节点是否有匹配的节点,若有,则该节点必须是ObjectNode,若无,则自动创建一个* 4.withArray   仅查询当前节点是否有匹配的节点,若有,则该节点必须是ArrayNode,若无,则自动创建一个*/objectNode.findValue("女友");objectNode.get("pets");objectNode.with("others");objectNode.withArray("pets");//ObjectNode节点数据的添加//因为objectNode没有"myNode"节点,// 所有当调用objectNode.with("myNode")自动就添加了该节点,然后我们可以往该节点里面添加数据ObjectNode myNode = objectNode.with("myNode");myNode.put("key1", "value1");myNode.put("key2", 19.9);//ArrayNode节点数据的添加ArrayNode myArrayNode = objectNode.withArray("myArrayNode");myArrayNode.add("");//添加一个ObjectNode,然后又往这个ObjectNode里面放东西。ObjectNode jsonNodes = myArrayNode.addObject();//。。。。等等方法。}

Jackson简单用法相关推荐

  1. Jackson的简单用法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1简介 Jackson具有比较高的序列化和反序列化效率,据测试,无论是 ...

  2. 反编译工具jad简单用法

    反编译工具jad简单用法 下载地址: [url]http://58.251.57.206/down1?cid=B99584EFA6154A13E5C0B273C3876BD4CC8CE672& ...

  3. QCustomPlot的简单用法总结

    QCustomPlot的简单用法总结 第一部分:QCustomPlot的下载与安装 第二部分:QCustomPlot在VS2013+QT下的使用 QCustomPlot的简单用法总结    写在前面, ...

  4. python matplotlib 简单用法

    python matplotlib 简单用法 具体内容请参考官网 代码 import matplotlib.pyplot as plt import numpy as np # 支持中文 plt.rc ...

  5. Windump网络命令的简单用法

    Windump网络命令的简单用法 大家都知道,unix系统下有个tcpdump的抓包工具,非常好用,是做troubleshooting的好帮手.其实在windows下也有一个类似的工作,叫windum ...

  6. Android TabLayout(选项卡布局)简单用法实例分析

    本文实例讲述了Android TabLayout(选项卡布局)简单用法.分享给大家供大家参考,具体如下: 我们在应用viewpager的时候,经常会使用TabPageIndicator来与其配合.达到 ...

  7. shell expect的简单用法

    为什么需要expect?     我们通过Shell可以实现简单的控制流功能,如:循环.判断等.但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如 telnet服务器等进 ...

  8. Shellz中awk的简单用法

    其实shell脚本的功能常常被低估.在实际应用中awk sed 等用法可以为shell提供更为强大的功能.下面我们将一下awk调用的简单方法进行了总结.方便同学们学习: awk的简单用法: 第一种调用 ...

  9. python装饰器实例-Python装饰器原理与简单用法实例分析

    本文实例讲述了Python装饰器原理与简单用法.分享给大家供大家参考,具体如下: 今天整理装饰器,内嵌的装饰器.让装饰器带参数等多种形式,非常复杂,让人头疼不已.但是突然间发现了装饰器的奥秘,原来如此 ...

最新文章

  1. 面向对象编程概念_如何向6岁的孩子解释面向对象的编程概念
  2. nginx:413 Request Entity Too Large 及 修改 PHP上传文件大小配置
  3. Rails 新浪微博的登录认证
  4. 重构-改善既有代码的设计:重构原则(二)
  5. 中南大学c语言程序设计2013年下学期期末考试,2013级计算机专业本科生C语言程序设计期末考试资料.doc...
  6. asp.net 页面之间跳转的几种方法及区别(转)
  7. 敏捷开发组织【北京及其他地区QQ群】【长三角QQ群】【珠三角QQ群】
  8. goldengate mysql_使用GoldenGate实现MySQL到Oracle的数据实时同步
  9. 求根号m(巴比伦算法)
  10. 历时五天用 SwiftUI 做了一款 APP,阿里工程师如何做的?
  11. 18-数据持久化-Data Volume
  12. 来一场蛋白和小分子的风花雪月
  13. 根据一个id查找出数组里面的数据并改掉_Excel最强大的VLOOKUP以及INDEXamp;MATCH查找函数...
  14. susue linux防火墙,在64位的SUSUE下,g++编译的代码中,进入函数前的一段汇编让人费解,请高手解释一下?...
  15. 07 - 雷达发射机的主要质量指标
  16. Pycharm中文字体变成繁体解决方法
  17. Dynamics 365Online Server-Side OAuth身份认证二(S2S)
  18. python xlwt库的详细函数介绍,xlwt
  19. lenovo计算机无法启动,联想台式电脑不能启动开机
  20. python飞信api_使用python移动飞信模块发送短信

热门文章

  1. 讲座有感——科技论文写作要素
  2. python如何使用matplotlib画散点图使不同类别的点有不同的形状和颜色?
  3. Android实现SIM卡2拨打,android – 在双SIM卡设备中使用指定的SIM拨...
  4. 基于Java+MySQL 实现(Web)日程管理系统【100010222】
  5. 北京信息科技大学计算机学院研究生怎么样,北京信息科技大学考研难吗?一般要什么水平才可以进入?...
  6. 免费的python教程资源(中文,英文都有)
  7. 华为鸿蒙OS 2.0开发文档
  8. SYN5301型 时间检定仪
  9. 合肥通用职业技术学院计算机专业,2020年安徽高考专科提前批及大专录取时间及录取结果查询...
  10. html怎么绑定数据,06、如何在html中绑定数据