`

用jackson包实现json、对象、Map之间的转换

    博客分类:
  • java
阅读更多

 

 

主要用于测试学习用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:[足球, 乒乓球, 篮球]

 

 

 

 

 

 

 

2
0
分享到:
评论

相关推荐

    json转换工具jackson

    - **序列化**: Jackson 提供了 `ObjectMapper` 类,通过 `writeValueAsString()` 或 `writeValueAsBytes()` 方法可以将Java对象转换成JSON字符串或字节数组。 - **反序列化**: 使用 `readValue()` 方法,可以将...

    jackson json 转 map 数值科学计数法的问题解决.docx

    Jackson 是一个流行的 Java 库,用于将 JSON 数据转换为 Java 对象或 Map。在使用 Jackson 将 JSON 转换为 Map 的过程中,可能会遇到科学计数法的问题。该问题的出现是因为 JSON 中的数值类型太多,在转换过程中可能...

    对象转换成JSON和Map

    例如,使用Jackson的`ObjectMapper`,我们可以用`readValue()`方法将JSON字符串转换为Map: ```java Map, Object> map = mapper.readValue(jsonString, HashMap.class); ``` - **Map到JSON的转换**:相反的过程...

    使用jackson完成json与java对象的互相转换实例

    Jackson是Java领域最流行的JSON处理库之一,它提供了高效且灵活的API来实现JSON与Java对象之间的相互转换。本实例将详细介绍如何使用Jackson库进行JSON到Java对象的反序列化以及Java对象到JSON的序列化。 首先,...

    json和map互转的标准化实现

    在实际开发中,我们经常需要将JSON对象转换为Map,或者将Map转换为JSON字符串。这个过程的标准化实现对于确保数据的一致性和正确性至关重要。特别是对于处理null值和特定数据类型,如int,标准做法是将其转化为JSON...

    利用jackson包进行json字符串与pojo类之间的转换源代码

    本篇将详细介绍如何利用Jackson包进行JSON字符串与POJO(Plain Old Java Object)类之间的转换,并探讨相关源码。 Jackson库主要包括三个核心模块:`jackson-core`、`jackson-annotations`和`jackson-databind`。在...

    json格式与java类对象相互转换

    通过Jackson库,我们可以轻松地在JSON格式和Java类对象之间进行转换,从而简化了数据处理和网络通信的工作。在实际开发中,需要注意处理异常、序列化配置以及优化性能等方面的问题,以确保代码的健壮性和效率。同时...

    json字符串转成 Map/List

    Jackson是另一个流行的JSON处理库,提供了`ObjectMapper`类来实现JSON与Java对象之间的转换。 ```java import com.fasterxml.jackson.databind.ObjectMapper; import java.util.Map; String jsonString = "{\...

    Java对象与Json之间的互相转换的jar包

    它的核心类`Gson`可以实现对象到JSON和JSON到对象的转换。例如,`new Gson().toJson(obj)`会将Java对象转化为JSON字符串,而`new Gson().fromJson(jsonStr, YourClass.class)`则能将JSON字符串还原为Java对象。 3. ...

    json和map互转jackson和json-lib两种方式实现和区别

    使用Jackson库将Map转换为JSON和将JSON解析为Map的步骤如下: 1. **Map转JSON**: ```java import com.fasterxml.jackson.databind.ObjectMapper; ObjectMapper mapper = new ObjectMapper(); Map, Object> ...

    jackson的jar包,用于转换map与list到json

    这个特定的jar包专注于将Map和List对象转换为JSON格式,这意味着它包含了Jackson的核心组件,如`Jackson-databind`模块,该模块提供了`ObjectMapper`类,它是Jackson序列化和反序列化的主力。 使用Jackson,你可以...

    Jackson 框架 json 到 复杂 list 的转换

    在JSON到Java对象的转换中,Jackson允许我们将JSON字符串解析成Java对象,包括列表(List)和映射(Map)。对于复杂列表,这意味着列表中的每个元素可能是一个复杂的Java对象,包含了嵌套的对象或者列表。例如,一个用户...

    Java读取json文件,并转化为map取值

    在这个方法中,我们创建了一个`ObjectMapper`实例,它是Jackson库的核心类,用于进行JSON与Java对象之间的映射。`readValue`方法接受两个参数:一个是JSON文件的路径,另一个是目标类型,这里是`Map.class`。 现在...

    Java对Json的一系列操作(构建、json与对象的转换)

    1. 对象到JSON字符串:使用Gson或Jackson的相应方法,将Java对象转换为JSON字符串。 2. 集合到JSON:如果需要转换的是List或其他集合类型,可以使用`TypeToken`类来指定泛型类型,避免类型信息丢失。 四、JSON对象...

    java 和 json 对象间转换

    在Java中处理JSON数据主要依靠一些第三方库,json-lib是其中之一,它能够将Java对象转换成JSON格式的数据,也可以实现从JSON格式数据到Java对象的反向转换。 json-lib库支持将Java中的多种对象转换为JSON,包括...

    Jackson将json string转为Object,org.json读取json数组的实例

    描述中提到了一个实例,也就是使用Jackson库将JSON字符串转换为Java对象(Map),然后使用org.json库读取JSON数组。实例中说明了遇到的困难,即在使用Map读取第一级数据之后,尝试读取数组中的特定值时遇到了问题,...

    java对象与json对象的转换

    Java对象与JSON对象之间的转换是数据交换和网络通信中常见的需求。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java开发中,我们通常使用一些库...

    json和对象相互转换

    本文详细介绍了如何在Java中使用Jackson库实现JSON与Java对象之间的相互转换,并通过具体的代码示例展示了其用法。掌握这些技能可以帮助开发者更高效地处理客户端与服务器之间的数据交互问题。在未来的学习和实践中...

    json转Map,转javaBean,javBean和Map转json

    在Java开发中,JSON(JavaScript Object ...通过这样的工具类,我们可以简化JSON、Map和JavaBean之间的转换过程,提高代码的可读性和可维护性。在实际开发中,了解并熟练掌握这些转换方法对于处理数据交互至关重要。

    net.sf.json.JSONObject实现Object对象与Json字符串的互转

    实现Object对象与Json字符串的互转"深入探讨了如何使用`JSONObject`来处理这种转换。 首先,我们需要了解`JSONObject`的基本用法。`JSONObject`可以从一个Java对象创建,也可以解析为一个JSON字符串。例如,我们有...

Global site tag (gtag.js) - Google Analytics