欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Jackson简单教程

程序员文章站 2022-07-05 09:37:27
写在最前JSON的介绍就不过多介绍了,可以直接看w3c对JSON的简短介绍 W3C-JSON 。 这篇文章介绍的Jackson是JSON的一个类库 .Jackson引入依赖,我这用最新的版本com.fasterxml.jackson.corejackson-databind2.11...

写在最前

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

Jackson

  1. 引入依赖,我这用最新的版本
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.11.0</version>
</dependency>
  1. JAVA对象转换JSON;
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不止可以转换成文件,它有很多重载的方法
Jackson简单教程

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字符串较长,那么他的格式将显得非常的乱,你可以指定让他更美化的输出

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格式化

  1. JSON转换为JAVA对象
ObjectMapper mapper = new ObjectMapper();
Example e = mapper.readValue(new File("e:\\example.txt"), Example.class);
System.out.println(e);

Example(color=red, value=values;)

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)

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

Example(changeColor=blue, value=kateliuyi)

  1. 忽略空的字段 -@JsonInclude
    默认情况下输出的JSON是包含空字符串的 , 如果想忽略空,需要用到@JsonInclude 注解
  • @JsonInclude应用到类, 表示这个类的所有字段都忽略空
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应用到字段, 只忽略此字段
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}

  1. 忽略指定字段 - @JsonIgnore @JsonIgnoreProperties
  • @JsonIgnore
public class Example {
    @JsonIgnore
    private String color;
    private String value;
}

{“value”:“abc”}

  • @JsonIgnoreProperties
@JsonIgnoreProperties({"value"})
public class Example {
    private String color;
    private String value;
}

{“color”:“red”}

  1. 对集合的操作
  • java.util.List
try {
    ObjectMapper mapper = new ObjectMapper();
    String str = "[{\"color\":\"red\", \"value\":\"kateliuyi\"}, {\"color\":\"blue\", \"value\":\"nas\"}]";
    List<Example> 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
try {
    ObjectMapper mapper = new ObjectMapper();
    String string = "{\"name\":\"kateliuyi\", \"value\":\"abc\"}";
    Map<String, String> 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

相关标签: 工作学习 json