当前位置: 首页 > news >正文

Jackson库使用教程

1. Jackson概述
  • 定义: Jackson是一个基于Java的开源JSON解析工具,用于Java对象与JSON数据的互相转换。
  • 示例JSON:
    {"author": "一路向北_Coding","age": 20,"hobbies": ["coding", "leetcode", "reading"]
    }
    
  • Java类示例:
    class Blog {private String author;private int age;private String[] hobbies;
    }
    
2. Jackson的优势
  • 社区活跃: 更新迭代快,社区支持好。
  • 流行度: 根据Github统计,Jackson是最流行的序列化工具之一。
  • 依赖少: 稳定性强,API丰富。
  • Spring默认: Jackson是Spring系列的默认JSON解析器。
3. Jackson使用入门
  • 引入依赖: Maven项目中添加jackson-corejackson-annotationsjackson-databind依赖。Spring项目只需引入spring-boot-starter-web
  • API封装: 将Jackson API封装为工具类,便于使用。
4. Jackson常用API
  • Java对象转JSON:
    public static String toString(Object obj, String default) {try {return MAPPER.writeValueAsString(obj);} catch (JsonProcessingException e) {LOGGER.error("toString error" + e.getMessage());return default;}
    }
    
  • JSON转Java对象:
    • 带泛型:
      public static <T> T toObject(String jsonString, TypeReference<T> typeReference) {return toObject(jsonString, null, typeReference);
      }
      
    • 不带泛型:
      public static <T> T toObject(String jsonString, T default, Class<T> clazz) {try {return MAPPER.readValue(jsonString, clazz);} catch (Exception e) {LOGGER.error("toObject error:" + e.getMessage());return default;}
      }
      
  • JSON反序列化为List:
    public static <T> List<T> ofList(String jsonString, Class<T> clazz) {if (StringUtil.isBlank(jsonString)) {return null;}CollectionType javaType = MAPPER.getTypeFactory().constructCollectionType(List.class, clazz);try {return MAPPER.readValue(jsonString, javaType);} catch (JsonProcessingException e) {LOGGER.error("toList error:" + e.getMessage());return null;}
    }
    
  • JSON反序列化为Map:
    public static <K, V> Map<K, V> ofMap(String jsonString, Class<K> keyClazz, Class<V> valueClazz) {if (StringUtil.isBlank(jsonString)) {return null;}MapType javaType = MAPPER.getTypeFactory().constructMapType(Map.class, keyClazz, valueClazz);try {return MAPPER.readValue(jsonString, javaType);} catch (JsonProcessingException e) {LOGGER.error("ofMap:" + e.getMessage(), e);return null;}
    }
    
5. 总结
  • Jackson除了基本的序列化和反序列化功能外,还有更多高级用法,如JsonNode模型、Jackson注解等。
http://www.lryc.cn/news/391521.html

相关文章:

  • 汉王、绘王签字版调用封装
  • 如何在TikTok上获得更多观看量:12个流量秘诀
  • vue模板语法v-html
  • 13 Redis-- 数据一致性模型、MySQL 和 Redis 的数据一致性
  • 启动Nuxt-hub-starter: Failed to initialize wrangler bindings proxy write EOF
  • 技术驱动旅游创新!深度解析景区导览小程序的地图渲染与AR导航技术
  • 二叉树之遍历
  • 【经验贴】如何做好自己的职业规划(技术转项目经理)
  • 【笔记】字符串相似度代码分享
  • AI墓地:738个倒闭AI项目的启示
  • 工程文件参考——CubeMX+LL库+SPI主机 阻塞式通用库
  • LLM - 模型历史
  • Go语言中的时间与日期处理:time包详解
  • Java实现单点登录(SSO)详解:从理论到实践
  • 【leetcode82-91动态规划,91-95多维动态规划】
  • Django学习第四天
  • redis-benchmark 使用
  • 什么是 qobject_cast?
  • Python酷库之旅-第三方库Pandas(001)
  • Firefox 编译指南2024 Windows10篇- 编译Firefox(三)
  • CSS弹性布局:打造响应式与灵活的网页设计
  • 【高阶数据结构】图的应用--最短路径算法
  • 腾讯云函数node.js返回自动带反斜杠
  • 大模型知识学习
  • JAVA声明数组
  • VBA通过Range对象实现Excel的数据写入
  • 记录OSPF配置,建立邻居失败的过程
  • 算法体系-25 第二十五节:窗口内最大值或最小值的更新结构
  • 等保2.0中还有哪些针对云计算的安全要求?
  • 数组与 ArrayList 的区别是什么?