jackson常用配置

该博客详细介绍了Jackson库的常用配置,包括序列化与反序列化的设置,如非空字段处理、日期格式化、未知属性处理等。同时,通过示例展示了如何创建和操作JSON节点,包括添加、修改、删除节点以及解析JSON字符串。
摘要由CSDN通过智能技术生成
jackson常用配置
@SpringBootTest
 public class JacksonTreeModelTest {

     private ObjectMapper objectMapper;

     @Before
   public void init() {
         objectMapper = new ObjectMapper();
         // 如果为空则不输出
         objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
         // 对于空的对象转json的时候不抛出错误
         objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
         // 禁用序列化日期为timestamps
         objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
         // 禁用遇到未知属性抛出异常
         objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
         // 视空字符传为null
         objectMapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
  
         // 低层级配置
         objectMapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
         // 允许属性名称没有引号
         objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
         // 允许单引号
         objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
         // 取消对非ASCII字符的转码
         objectMapper.configure(JsonGenerator.Feature.ESCAPE_NON_ASCII, false);
         
         //时间格式化
         objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         objectMapper.setDateFormat(sdf);
         
         //禁用遇到未知属性抛出异常
         objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 
  
     }
  
     @Test
     public void testTreeModel() throws Exception {
         JsonNodeFactory nodeFactory = objectMapper.getNodeFactory();
         // 创建一个model
         ObjectNode node = nodeFactory.objectNode();
         node.put("age", 18);
         // 新增
         node.put("name", "周杰伦");
         // 如果存在同名的则是替换操作
         node.put("age", 19);
         ArrayNode coursesNode = node.putArray("courses");
         coursesNode.add("思想政治");
         coursesNode.add("高等数学");
         // 获取节点类型
         System.out.println(node.getNodeType());
         System.out.println(coursesNode.getNodeType());
         // 移除第一个
         coursesNode.remove(0);
         // 输出
         System.out.println(node.toString());
         String jsonStr = "{\"age\":19,\"name\":\"周杰伦\",\"courses\":[\"高等数学\"]}";
         JsonNode jsonNode = objectMapper.readTree(jsonStr);
         ArrayNode arrayNode = (ArrayNode) jsonNode.withArray("courses");
         arrayNode.add("马列");
         for (int i = 0;i < arrayNode.size();i++){
             System.out.println(arrayNode.get(i).asText());
         }
         System.out.println(jsonNode.toString());
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值