请选择 进入手机版 | 继续访问电脑版

Jackson简单教程

[复制链接]
暖男先生 发表于 2021-1-1 17:47:34 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
写在最前

JSON的先容就不外多先容了,可以直接看w3c对JSON的简短先容 W3C-JSON 。 这篇文章先容的Jackson是JSON的一个类库 .
Jackson


  • 引入依赖,我这用最新的版本
  1.         com.fasterxml.jackson.core        jackson-databind        2.11.0
复制代码

  • JAVA对象转换JSON;
  1. public static void main(String[] args) {   try {        ObjectMapper mapper = new ObjectMapper();        Example exa = create();        /*把java对象内的属性写到example.txt文件*/        mapper.writeValue(new File("e:\\example.txt"), exa);    }catch (Exception e) {        e.printStackTrace();    }}static Example create (){    Example exa = new Example();    exa.setValue("values;");    exa.setColor("red");    return exa;}
复制代码
  example.txt 文件的内容 {“color”:“red”,“value”:“values;”}
writeValue不止可以转换成文件,它有很多重载的方法

  1. try {    ObjectMapper mapper = new ObjectMapper();     // 以JSON字符串的形式输出     String string = mapper.writeValueAsString(create());     System.out.println(string); }catch (Exception e) {     e.printStackTrace(); }
复制代码
  {“color”:“red”,“value”:“values;”}
如果你的JSON字符串较长,那么他的格式将显得非常的乱,你可以指定让他更美化的输出
  1. try {    ObjectMapper mapper = new ObjectMapper();    String beautifulJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(create());    System.out.println(beautifulJson);}catch (Exception e) {    e.printStackTrace();}
复制代码
  {
“color” : “red”,
“value” : “values;”
}
固然你也可以用一些在线的工具来完成这个工作 JSON格式化

  • JSON转换为JAVA对象
  1. ObjectMapper mapper = new ObjectMapper();Example e = mapper.readValue(new File("e:\\example.txt"), Example.class);System.out.println(e);
复制代码
  Example(color=red, value=values;)
  1. try {     ObjectMapper mapper = new ObjectMapper();     String str = "{"value":"kateliuyi","color":"blue"}";     Example e = mapper.readValue(str, Example.class);     System.out.println(e); } catch (Exception e){     e.printStackTrace(); }
复制代码
  Example(color=blue, value=kateliuyi)

  • 指定JSON的字段定名
    在本篇文章,Example对象转换为JSON输出的字段名是color、value(是以javabean的属性来决定的), 如果想改变JSON输出的字段定名,需要用到@JsonProperty注解
  1. @JsonProperty("changeColor")private String color;private String value;
复制代码
  Example(changeColor=blue, value=kateliuyi)

  • 忽略空的字段 -@JsonInclude
    默认情况下输出的JSON是包罗空字符串的 , 如果想忽略空,需要用到@JsonInclude 注解


  • @JsonInclude应用到类, 表现这个类的所有字段都忽略空
  1. try {    ObjectMapper mapper = new ObjectMapper();    // 以JSON字符串的形式输出    String string = mapper.writeValueAsString(create());    System.out.println(string);}catch (Exception e) {    e.printStackTrace();}static Example create (){         Example exa = new Example();    /*exa.setValue("values;");(*/    exa.setColor(null);    return exa; }
复制代码
  {}


  • @JsonInclude应用到字段, 只忽略此字段
  1. public class Example {    @JsonInclude(JsonInclude.Include.NON_NULL)    private String color;    private String value;}static Example create (){        Example exa = new Example();           exa.setValue(null);           exa.setColor(null);           return exa;}
复制代码
  {“value”:null}

  • 忽略指定字段 - @JsonIgnore @JsonIgnoreProperties


  • @JsonIgnore
  1. public class Example {    @JsonIgnore    private String color;    private String value;}
复制代码
  {“value”:“abc”}


  • @JsonIgnoreProperties
  1. @JsonIgnoreProperties({"value"})public class Example {    private String color;    private String value;}
复制代码
  {“color”:“red”}

  • 对聚集的操作


  • java.util.List
  1. try {    ObjectMapper mapper = new ObjectMapper();    String str = "[{"color":"red", "value":"kateliuyi"}, {"color":"blue", "value":"nas"}]";    List list = Arrays.asList(mapper.readValue(str, Example[].class));    System.out.println(list);}catch (Exception e) {    e.printStackTrace();}
复制代码
  [Example(color=red, value=kateliuyi), Example(color=blue, value=nas)]


  • java.util.Map
  1. try {    ObjectMapper mapper = new ObjectMapper();    String string = "{"name":"kateliuyi", "value":"abc"}";    Map map = mapper.readValue(string, Map.class);    System.out.println(map);}catch (Exception e) {    e.printStackTrace();}
复制代码
  {name=kateliuyi, value=abc}

来源:https://blog.csdn.net/csder_xj/article/details/111941375
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )