Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4248500
  • 博文数量: 447
  • 博客积分: 1241
  • 博客等级: 中尉
  • 技术积分: 5786
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-27 06:48
个人简介

读好书,交益友

文章分类

全部博文(447)

文章存档

2024年(1)

2023年(5)

2022年(29)

2021年(49)

2020年(16)

2019年(15)

2018年(23)

2017年(67)

2016年(42)

2015年(51)

2014年(57)

2013年(52)

2012年(35)

2011年(5)

分类: Java

2017-02-20 19:20:06

一直使用jackson处理json,最近ui传来的数据{"funcCode":"Read_Coils","action":"pass","startaddr":"","endaddr":""},处理时需要把""转为null,
看了许久才明白其中的道理.
先写一个自定义反序列化类

点击(此处)折叠或打开

  1. import com.fasterxml.jackson.core.JsonParser;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.DeserializationContext;
  4. import com.fasterxml.jackson.databind.JsonDeserializer;
  5. import com.fasterxml.jackson.databind.JsonNode;

  6. import java.io.IOException;

  7. /**
  8.  * Created by li on 2/17/17.
  9.  */
  10. class CustomDeserializer extends JsonDeserializer<String> {

  11.     @Override
  12.     public String deserialize(JsonParser jsonParser, DeserializationContext context) throws IOException, JsonProcessingException {
  13.         JsonNode node = jsonParser.readValueAsTree();
  14.         if (node.asText().isEmpty()) {
  15.             return null;
  16.         }
  17.         return node.toString();
  18.     }

  19. }
然后在POJO类需要转换的字段加注解

点击(此处)折叠或打开

  1. private String action;
  2.     @JsonDeserialize(using = CustomDeserializer.class)
  3.     private String startaddr;
  4.     @JsonDeserialize(using = CustomDeserializer.class)
  5.     private String endaddr;
主要是引用
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;

转换的代码


点击(此处)折叠或打开

  1. ObjectMapper mapper = new ObjectMapper();
  2.         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

  3. ModbusTcp modbusTcp = mapper.readValue(json, ModbusTcp.class);
导入库
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

注意是fastxml不是codehua,否则不起作用


阅读(17743) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~