主要用于测试学习用jackson包实现json、对象、Map之间的转换。
1、准备测试用的Java类
(1)Link类
package test; /** * Description: 联系方式,被user使用 */ public class Link { private String phone; //移动电话 private String address; //地址 private String qq; //QQ public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getQq() { return qq; } public void setQq(String qq) { this.qq = qq; } }
(2)User类
package test; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; /** * Description: 用户,测试模型类 */ public class User { private String id; //标识 private String name; //姓名 private int age; //年龄 private double pay; //工资 private boolean valid; //是否有效 private char one; //一个字符 private Date birthday; //生日 private Link link; //联系方式,自定义 private Map map; //测试用 private List list; //测试用 private Set set; //测试用 public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getPay() { return pay; } public void setPay(double pay) { this.pay = pay; } public boolean isValid() { return valid; } public void setValid(boolean valid) { this.valid = valid; } public char getOne() { return one; } public void setOne(char one) { this.one = one; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Link getLink() { return link; } public void setLink(Link link) { this.link = link; } public Map getMap() { return map; } public void setMap(Map map) { this.map = map; } public List getList() { return list; } public void setList(List list) { this.list = list; } public Set getSet() { return set; } public void setSet(Set set) { this.set = set; } }
2、测试类,没用Junit,用Main()方法输出。
package test; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; /** * Description: 主要用于测试学习用jackson包实现json、对象、Map之间的转换 * * Date: 2016年6月6日 * Time: 下午3:23:23 */ public class JsonTest { public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException { User user=new User(); user.setId("01"); user.setName("张三"); user.setAge(33); user.setPay(6666.88); user.setValid(true); user.setOne('E'); user.setBirthday(new Date(20l*366*24*3600*1000)); //1990年 Link link = new Link(); link.setAddress("河南省济源市"); link.setPhone("13899995555"); link.setQq("123456"); user.setLink(link); Map map=new HashMap(); map.put("aa", "this is aa"); map.put("bb", "this is bb"); map.put("cc", "this is cc"); user.setMap(map); List list=new ArrayList(){}; list.add("普洱"); list.add("大红袍"); user.setList(list); Set set=new HashSet(); set.add("篮球"); set.add("足球"); set.add("乒乓球"); user.setSet(set); ObjectMapper mapper = new ObjectMapper(); //转换器 //测试01:对象--json String json=mapper.writeValueAsString(user); //将对象转换成json System.out.println(json); /* 结果如下: {"id":"01","name":"张三","age":33,"pay":6666.88,"valid":true,"one":"E","birthday":1465185448998, "link":{"phone":"13899995555","address":"河南省济源市","qq":"123456"}, "map":{"aa":"this is aa","bb":"this is bb","cc":"this is cc"}, "list":["普洱","大红袍"], "set":["乒乓球","足球","篮球"]} 注意点:(1) 日期--长整型 (2)List、Set均转成数组 */ //测试02:json--map Map m = mapper.readValue(json, Map.class); //json转换成map System.out.println("pay:"+m.get("pay").getClass().getName()); //java.lang.Double System.out.println("valid:"+m.get("valid").getClass().getName()); //java.lang.Boolean System.out.println("birthday:"+m.get("birthday").getClass().getName()); //java.lang.Long System.out.println("link:"+m.get("link").getClass().getName()); //java.util.LinkedHashMap System.out.println("map:"+m.get("map").getClass().getName()); //java.util.LinkedHashMap System.out.println("list:"+m.get("list").getClass().getName()); //java.util.ArrayList System.out.println("set:"+m.get("set").getClass().getName()); //java.util.ArrayList /* 结果如下: pay:java.lang.Double valid:java.lang.Boolean birthday:java.lang.Long link:java.util.LinkedHashMap map:java.util.LinkedHashMap list:java.util.ArrayList set:java.util.ArrayList 注意点:(1) 日期--长整型 (2)map、子对象均转换成了LinkedHashMap (3)List、Set均转成ArrayList */ //测试03:map--json json=mapper.writeValueAsString(m); //map转json System.out.println(json); //与之前格式完全相同,说明经过map转换后,信息没有丢失 //测试04:json--对象 User u=mapper.readValue(json, User.class); //json转java对象。经测,转成对象后,一切恢复正常 System.out.println("pay:"+u.getPay()); System.out.println("valid:"+u.isValid()); System.out.println("birthday:"+u.getBirthday()); System.out.println("link:"+u.getLink()); System.out.println("map:"+u.getMap()); System.out.println("list:"+u.getList()); System.out.println("set:"+u.getSet()); //测试05:其他转换 byte[] data=mapper.writeValueAsBytes(u); //对象转成二进制数组 } }
3、输出结果
{"id":"01","name":"张三","age":33,"pay":6666.88,"valid":true,"one":"E","birthday":632448000000,"link":{"phone":"13899995555","address":"河南省济源市","qq":"123456"},"map":{"aa":"this is aa","bb":"this is bb","cc":"this is cc"},"list":["普洱","大红袍"],"set":["乒乓球","足球","篮球"]} pay:java.lang.Double valid:java.lang.Boolean birthday:java.lang.Long link:java.util.LinkedHashMap map:java.util.LinkedHashMap list:java.util.ArrayList set:java.util.ArrayList {"id":"01","name":"张三","age":33,"pay":6666.88,"valid":true,"one":"E","birthday":632448000000,"link":{"phone":"13899995555","address":"河南省济源市","qq":"123456"},"map":{"aa":"this is aa","bb":"this is bb","cc":"this is cc"},"list":["普洱","大红袍"],"set":["乒乓球","足球","篮球"]} pay:6666.88 valid:true birthday:Tue Jan 16 08:00:00 CST 1990 link:test.Link@350385f1 map:{aa=this is aa, bb=this is bb, cc=this is cc} list:[普洱, 大红袍] set:[足球, 乒乓球, 篮球]
相关推荐
Jackson 是一个流行的 Java 库,用于将 JSON 数据转换为 Java 对象或 Map。在使用 Jackson 将 JSON 转换为 Map 的过程中,可能会遇到科学计数法的问题。该问题的出现是因为 JSON 中的数值类型太多,在转换过程中可能...
- **序列化**: Jackson 提供了 `ObjectMapper` 类,通过 `writeValueAsString()` 或 `writeValueAsBytes()` 方法可以将Java对象转换成JSON字符串或字节数组。 - **反序列化**: 使用 `readValue()` 方法,可以将...
例如,使用Jackson的`ObjectMapper`,我们可以用`readValue()`方法将JSON字符串转换为Map: ```java Map, Object> map = mapper.readValue(jsonString, HashMap.class); ``` - **Map到JSON的转换**:相反的过程...
Jackson是Java领域最流行的JSON处理库之一,它提供了高效且灵活的API来实现JSON与Java对象之间的相互转换。本实例将详细介绍如何使用Jackson库进行JSON到Java对象的反序列化以及Java对象到JSON的序列化。 首先,...
在实际开发中,我们经常需要将JSON对象转换为Map,或者将Map转换为JSON字符串。这个过程的标准化实现对于确保数据的一致性和正确性至关重要。特别是对于处理null值和特定数据类型,如int,标准做法是将其转化为JSON...
Jackson是另一个流行的JSON处理库,提供了`ObjectMapper`类来实现JSON与Java对象之间的转换。 ```java import com.fasterxml.jackson.databind.ObjectMapper; import java.util.Map; String jsonString = "{\...
本篇将详细介绍如何利用Jackson包进行JSON字符串与POJO(Plain Old Java Object)类之间的转换,并探讨相关源码。 Jackson库主要包括三个核心模块:`jackson-core`、`jackson-annotations`和`jackson-databind`。在...
通过Jackson库,我们可以轻松地在JSON格式和Java类对象之间进行转换,从而简化了数据处理和网络通信的工作。在实际开发中,需要注意处理异常、序列化配置以及优化性能等方面的问题,以确保代码的健壮性和效率。同时...
它的核心类`Gson`可以实现对象到JSON和JSON到对象的转换。例如,`new Gson().toJson(obj)`会将Java对象转化为JSON字符串,而`new Gson().fromJson(jsonStr, YourClass.class)`则能将JSON字符串还原为Java对象。 3. ...
使用Jackson库将Map转换为JSON和将JSON解析为Map的步骤如下: 1. **Map转JSON**: ```java import com.fasterxml.jackson.databind.ObjectMapper; ObjectMapper mapper = new ObjectMapper(); Map, Object> ...
这个特定的jar包专注于将Map和List对象转换为JSON格式,这意味着它包含了Jackson的核心组件,如`Jackson-databind`模块,该模块提供了`ObjectMapper`类,它是Jackson序列化和反序列化的主力。 使用Jackson,你可以...
在JSON到Java对象的转换中,Jackson允许我们将JSON字符串解析成Java对象,包括列表(List)和映射(Map)。对于复杂列表,这意味着列表中的每个元素可能是一个复杂的Java对象,包含了嵌套的对象或者列表。例如,一个用户...
在这个方法中,我们创建了一个`ObjectMapper`实例,它是Jackson库的核心类,用于进行JSON与Java对象之间的映射。`readValue`方法接受两个参数:一个是JSON文件的路径,另一个是目标类型,这里是`Map.class`。 现在...
1. 对象到JSON字符串:使用Gson或Jackson的相应方法,将Java对象转换为JSON字符串。 2. 集合到JSON:如果需要转换的是List或其他集合类型,可以使用`TypeToken`类来指定泛型类型,避免类型信息丢失。 四、JSON对象...
在Java中处理JSON数据主要依靠一些第三方库,json-lib是其中之一,它能够将Java对象转换成JSON格式的数据,也可以实现从JSON格式数据到Java对象的反向转换。 json-lib库支持将Java中的多种对象转换为JSON,包括...
描述中提到了一个实例,也就是使用Jackson库将JSON字符串转换为Java对象(Map),然后使用org.json库读取JSON数组。实例中说明了遇到的困难,即在使用Map读取第一级数据之后,尝试读取数组中的特定值时遇到了问题,...
Java对象与JSON对象之间的转换是数据交换和网络通信中常见的需求。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java开发中,我们通常使用一些库...
本文详细介绍了如何在Java中使用Jackson库实现JSON与Java对象之间的相互转换,并通过具体的代码示例展示了其用法。掌握这些技能可以帮助开发者更高效地处理客户端与服务器之间的数据交互问题。在未来的学习和实践中...
在Java开发中,JSON(JavaScript Object ...通过这样的工具类,我们可以简化JSON、Map和JavaBean之间的转换过程,提高代码的可读性和可维护性。在实际开发中,了解并熟练掌握这些转换方法对于处理数据交互至关重要。
总结来说,`json-lib`是Java开发中处理JSON数据的重要工具,通过引入必要的jar包,我们可以方便地实现Java对象与JSON之间的转换,从而简化数据交互的过程。在实际开发中,还可以结合其他JSON库,如Jackson、Gson等,...