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

Jackson工具,java对象和json字符串之间的互相转换

一、maven依赖引入jackson

		<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.12.5</version></dependency>

在这里插入图片描述
jackson-databind依赖见下:

    <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId></dependency>

二、JsonUtil工具类

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;public class JsonUtil {public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();/*** Json encode** @param object object* @return String*/public static String encode(Object object) {try {return OBJECT_MAPPER.writeValueAsString(object);} catch (JsonProcessingException e) {throw new RuntimeException("Json encode failed!", e);}}/*** Json decode** @param json          json* @param typeReference typeReference* @param <T>           T* @return T*/public static <T> T decode(String json, TypeReference<T> typeReference) {try {return OBJECT_MAPPER.readValue(json, typeReference);} catch (Exception e) {throw new RuntimeException("Json decode failed!", e);}}/*** Json decode** @param json        json* @param targetClass targetClass* @param <T>         T* @return T*/public static <T> T decode(String json, Class<T> targetClass) {try {return OBJECT_MAPPER.readValue(json, targetClass);} catch (Exception e) {throw new RuntimeException("Json decode failed!", e);}}
}

三、使用示例

定义一个User对象

    @AllArgsConstructor@NoArgsConstructor@Datapublic static class User {private String name;private Integer age;}
  • encode() 单个对象
String str = JsonUtil.encode(new User("张三", 10));// {"name":"张三","age":10}
System.out.println(str);
  • encode() 对象集合
   List<User> userList  = Lists.newArrayList();userList.add(new User("张三", 10));userList.add(new User("李四", 12));String str = JsonUtil.encode(userList);// [{"name":"张三","age":10},{"name":"李四","age":12}]System.out.println(str);    
  • decode() 单个对象
   String json = "{\"name\":\"stelin\",\"age\":18}";User user = JsonUtil.decode(json, User.class);// JsonUtil.User(name=stelin, age=18)System.out.println(user);
  • decode() 对象集合
String str = "[{\"name\":\"张三\",\"age\":10},{\"name\":\"李四\",\"age\":12}]";List<User> userList = JsonUtil.decode(str, new TypeReference<List<User>>() {});// [JsonUtil.User(name=张三, age=10), JsonUtil.User(name=李四, age=12)]
System.out.println(userList);
  • decode() 字符串集合
String str = "[1, 2, 3]";List<String> list = JsonUtil.decode(str, new TypeReference<List<String>>() {
});// [1, 2, 3]
System.out.println(list);

很多jar包都会有类TypeReference,别错误地引用了,注意这里的TypeReference是com.fasterxml.jackson.core.type.TypeReference。

http://www.lryc.cn/news/345228.html

相关文章:

  • 【设计模式】之装饰器模式
  • leetcode_46.全排列
  • 【牛客】[HNOI2003]激光炸弹
  • Docker与Harbor:构建企业级私有Docker镜像仓库
  • 推荐几个傻瓜式短视频去水印在线网站
  • 大模型LLM之SFT微调总结
  • 【RocketMQ问题总结-2】
  • 掌握Android Fragment开发之魂:Fragment的深度解析(上)
  • 深度解读DreamFusion:一站式AI解决方案
  • JVM-02
  • 【一起深度学习——NIN】
  • 数字工厂管理系统如何助力企业数据采集与分析
  • uniap之微信公众号支付
  • Django知识点总结
  • 算法(C++
  • Python专题:六、循环语句(1)
  • 力扣2105---给植物浇水II(Java、模拟、双指针)
  • Windows设置Redis为开机自启动
  • 行业早报5.10
  • Java+SpringBoot+JSP实现在线心理评测与咨询系统
  • 机器学习算法应用——K近邻分类器(KNN)
  • python数据分析——数据的选择和运算
  • 《CKA/CKAD应试指南/从docker到kubernetes 完全攻略》学习笔记 第8章 deployment
  • 步态识别论文(6)GaitDAN: Cross-view Gait Recognition via Adversarial Domain Adaptation
  • K8S中的弹性云服务如何搭建,可能遇到的问题,如何解决!(稳啦!!!!全都稳啦!!!)
  • 新增分类——后端
  • 20232801 2023-2024-2 《网络攻防实践》实践九报告
  • 类和对象--this引用原理
  • 力扣:416. 分割等和子集(Java,动态规划:01背包问题)
  • Vue进阶之Vue项目实战(一)