Jackson工具

Jackson

Jackson包含一个core JAR,和两个依赖core JAR的JAR:

  jackson-core-2.2.3.jar(核心jar包,下载地址

  jackson-annotations-2.2.3.jar(该包提供Json注解支持,下载地址

  jackson-databind-2.2.3.jar(下载地址

maven依赖:

dependency>  
      <groupId>com.fasterxml.jackson.core</groupId>  
      <artifactId>jackson-databind</artifactId>  
      <version>${jackson-version}</version>  
</dependency>  
<dependency>  
      <groupId>com.fasterxml.jackson.core</groupId>  
      <artifactId>jackson-core</artifactId>  
      <version>${jackson-version}</version>  
</dependency>  
<dependency>  
      <groupId>com.fasterxml.jackson.core</groupId>  
      <artifactId>jackson-annotations</artifactId>  
      <version>${jackson-version}</version>  
</dependency>  
Jackson提供了两种不同的JSON解析器:
  1. ObjectMapper:把JSON解析到自定义的Java类中,或者解析到一个Jackson指定的树形结构中(Tree model)。
  2. Jackson JsonParser:一种“拉式”(pull)解析器,每次解析一组JSON数据。
Jackson也包含了两种不同的JSON生成器:
  1. ObjectMapper:把自定义的Java类,或者一个Jackson指定的树形结构生成为JSON文件。
  2. Jackson JsonGenerator:每次只生成一组JSON数据。

ObjectMapper

ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。 

ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介质中。

  1.          * writeValue(File arg0, Object arg1)把arg1转成json序列,并保存到arg0文件中。 
  2.          * writeValue(OutputStream arg0, Object arg1)把arg1转成json序列,并保存到arg0输出流中。 
  3.          * writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组。 
  4.          * writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串。 

作用:

  1、把对象转son(String类型);

private static final ObjectMapper MAPPER = new ObjectMapper();

    return this.MAPPER.writeValueAsString(result);

  2、把json转成对象;

User user = MAPPER.readValue(json, User.class);
                
this.MAPPER.writeValueAsString(user)

  3、直接解析

ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(json);
String type = jsonNode.get("type").asText();
Long itemId = jsonNode.get("itemId").asLong();

JSON注解

Jackson提供了一系列注解,方便对JSON序列化和反序列化进行控制,下面介绍一些常用的注解。

  @JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。

  @JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。

  @JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。

猜你喜欢

转载自www.cnblogs.com/soul-wonder/p/8919665.html