`

用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
分享到:
评论

相关推荐

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

    将json转换为map之后,如果数值类型太多会在转换之后出现科学计数法的问题,经研究jackson源码、网上百度资料得知可以通过设置一些参数解决该问题

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

    json格式与java类对象相互转换。json格式转换成java类对象,List,Map。类对象转换成json。

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

    jackson的jar包,用于转换map与list到json,直接导入即可

    Jackson 框架JSON、XML、List、Map直接相互转换

    NULL 博文链接:https://bugyun.iteye.com/blog/2278997

    Ajax&Json&XML.html

    JSON数据和Java对象的相互转换 常见的解析器:Jsonlib,Gson,fastjson,jackson JSON转为Java对象 1. 导入jackson的相关jar包 2. 创建Jackson核心对象 ObjectMapper 3.调用ObjectMapper的相关方法进行...

    json_jackson_junit_demo.zip

    json_jackson_junit_demo json 与 bean list map 相互转换

    jackson-jar

    Jackson的目标是为开发者提供快速、准确、轻量级和用起来最爽的json处理类库。本文将概括介绍Jackson的主要功能和相关功能的使用示例。 2. 使用方式 Jackson提供三种可选的json处理方式: 1) Streaming API 又...

    jackson-databind-3.0.0.jar下载

    2. 支持复杂对象与JSON的映射:支持Java类型如Map、List、数组以及自定义bean与JSON的相互转换。 3. 支持多种注解配置序列化和反序列化:支持@JsonIgnore, @JsonFormat, @JsonView等多种注解配置对象与JSON的映射方式...

    Jackson的使用

    利用jackson将实体、List、Map转换成json、及将json字符串转换成Bean、List、Map等,构造json树模型,很好用的类库。

    JACKSON-2.6的核心jar包

    jackson-2.6的核心jar包,还需要和另外两...用于将集合、对象、map等数据类型转换为json字符串,是当下流行的一种前后端交互技术ajax所需要的jar包。低版本的可能产生版本冲突,2.60以上的版本解决了jar包冲突的问题。

    json转换类

    json转换类,序列化合反序列化....

    jackson开发常用最新jar集合

    jackson相关jar,spring mvc @ResponseBody json map 转换开发常用jar集合,包含jackson-core-asl-1.9.13.jar,jackson-core-lgpl-1.9.13.jar,jackson-mapper-asl-1.9.13.jar,jackson-mapper-lgpl-1.9.13.jar,...

    json-patch-convertor:一个实用程序库,它将Jackson注释的域对象转换为遵循RFC6902(https

    概述该项目旨在提供一种方便的方式来... 如果您想要结果的java.util类,可以在将其转换为字符串之前轻松对其进行操作,则可以使用以下命令: List<Map>> result = ObjectToPatchMap.parseFreshObject(person1);用例2

    devops-dev-dsl

    xml转mapjson1. jackson-databind1.1. json字符串转java对象1.2. java对象转json字符串1.3. jackson的java对象1.4. 初始化ObjectMapper1.5. 值转换2. jsonassert3. jsonpath4. fastjsonexcel1. easyexcel-tutorial2...

    SpringBootConformity:SpringBoot + Mybatis + Redis +任务

    构造并返回Json(1)自定义响应数据结构这个类是提供给门户,ios,安卓,微信商城用的门户接受此类数据后需要使用本类的方法转换成对于的数据类型格式(类,或者list)其他自行处理200:表示成功500:表示错误,错误...

    springboot2+elasticsearch7+可视化es-head+cerebro整合搜索

    使用原生的byte[]或者String使用Map方式,会自动转换成与之等价的JSON使用第三方库来生成序列化beans,如JackJSON、FastJSON等使用内置的帮助类XContentFactory.jsonBuilder()前端技术 :ElasticSearch-head插件...

    积分java源码-anoa:用于基于通用格式的数据结构的稳健操作和序列化的Java库

    map-reduce 作业、Storm 拓扑、命令行工具、各种脚本中进行处理。 事件定义自然会随着时间而演变,因此必须优雅地处理更改。 我们喜欢使用久经考验的跨平台序列化库,因为我们讨厌重新发明轮子。 Avro 适用于批量...

Global site tag (gtag.js) - Google Analytics