Java使用Jackson进行Json与对象转换指南
本文主要介绍了如何在Java的Controller层中使用Jackson库进行JSON与其他类型(如Object、ArrayList、Map)之间的转换。 Jackson是Java中广泛使用的JSON处理库,它提供了强大的序列化和反序列化功能。为了进行JSON与其他类型的转换,我们需要引入Jackson的三个核心JAR包: 1. `jackson-annotations.jar`:包含注解,如`@JsonAutoDetect`、`@JsonProperty`等,用于标注和控制序列化和反序列化的行为。 2. `jackson-core.jar`:提供基本的JSON处理功能,如流式API和树模型。 3. `jackson-databind.jar`:提供对象映射功能,通过`ObjectMapper`类实现Java对象与JSON字符串之间的转换。 以下是使用Jackson的`ObjectMapper`进行转换的示例: 1. 对象转JSON: 创建一个User类,包含属性"name"和"city",然后创建一个User对象并使用`ObjectMapper`将其转换为JSON字符串: ```java User user = new User("Tom", ""); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(user); System.out.println(json); // {"name":"Tom","city":""} ``` 2. Map<String, String>转JSON: 创建一个HashMap,存储键值对,然后使用`ObjectMapper`将其转换为JSON字符串: ```java HashMap<String, String> map = new HashMap<>(); map.put("name", "Kris"); map.put("city", ""); String json = mapper.writeValueAsString(map); System.out.println(json); // {"city":"","name":"Kris"} ``` 3. Map<String, Object>转JSON: 当Map的值是自定义对象时,同样可以转换。这里Map的值是User对象: ```java Map<String, User> map1 = new HashMap<>(); map1.put("01", new User("Tom", "")); map1.put("02", new User("Kris", "Ϻ")); String json = mapper.writeValueAsString(map1); System.out.println(json); // {"01":{"name":"Tom","city":""},"02":{"name":"Kris","city":"Ϻ"}} ``` 4. ArrayList<String>转JSON: 将ArrayList<String>转换为JSON数组: ```java ArrayList<String> al = new ArrayList<>(); al.add("Tom"); al.add("Shenyang"); String json = mapper.writeValueAsString(al); System.out.println(json); // ["Tom","Shenyang"] ``` 5. ArrayList<Object>转JSON: 如果ArrayList的元素是自定义对象,同样可以转换。这里ArrayList包含User对象: ```java ArrayList<User> userList = new ArrayList<>(); userList.add(new User("Tom", "")); userList.add(new User("Kris", "Ϻ")); String json = mapper.readValue(json, new TypeReference<List<User>>() {}); System.out.println(json); // [{"name":"Tom","city":""},{"name":"Kris","city":"Ϻ"}] ``` 总结来说,Jackson的`ObjectMapper`提供了一种灵活的方式来处理JSON数据与Java对象之间的转换,无论是简单类型、复杂对象还是集合类型,都可以轻松地在JSON和Java对象之间进行互换。这对于Web应用的Controller层尤其有用,因为它可以方便地处理HTTP请求中的JSON数据,并将响应数据转换为JSON格式返回给客户端。
1.导入jackson相关jar包
- jackson-annotations.jar
- jackson-core.jar
- jackson-databind.jar
2.创建jackson的核心对象:ObjectMapper
ObjectMapper mapper = new ObjectMapper();
3.调用mapper的相关方法
## 对象转json
User user = new User("Tom","沈阳");
String json = mapper.writeValueAsString(user);
System.out.print(json); //输出:{"name":"Tom","city","沈阳"}
## Map<String,String>转json
HashMap<String,String> map = new HashMap<String,String>();
map.put("name","Kris");
map.put("city","沈阳");
String json = mapper.writeValueAsString(map);
System.out.print(json); //输出:{"city":"沈阳","name":"Kris"} (HashMap是无序的)
## Map<String,Object>转json
Map<String,User> map = new HashMap<String,User>();
map1.put("01",new User("Tom","沈阳"));
map1.put("02",new User("Kris","上海"));
String json = mapper.writeValueAsString(map1);
System.out.println(json);
输出:
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构