如何使用ObjectMapper的方式实现Json和bean的自由转换

lieyanfeng 2013-01-05 07:38:08
网上很流行的一种json和bean之间转换的方式是
通过JSONObject和JSONArray来读取json中的数据,然后新建相应对象并放入其中。也就是手动挡创建对象。
这种方法不错,但是最近发现还有一种方法就是用
ObjectMapper.ReadValue的方式。
谁有例子能发一个?
还有用ObjectMapper的方式把bean转成json语句的例子如果有的话麻烦也发一下。
...全文
84349 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
一去二三里 2015-08-26
  • 打赏
  • 举报
回复
引用 13 楼 wwb239 的回复:
我new 出来的objectmapper对象为什么不能使用readvalue方法呢???
因为你还缺少一个core包,你导的只是mapper包
wwb239 2014-11-10
  • 打赏
  • 举报
回复
我new 出来的objectmapper对象为什么不能使用readvalue方法呢???
犯了你的贱 2014-09-10
  • 打赏
  • 举报
回复
public class StudentList { private List<Student> Student; public List<Student> getStudent() { return Student; } public void setStudent(List<Student> student) { Student = student; }
qinzl_1 2014-08-26
  • 打赏
  • 举报
回复
引用 6 楼 AA5279AA 的回复:
[quote=引用 5 楼 loloone 的回复:] [quote=引用 3 楼 AA5279AA 的回复:] 第一种:
public class JsonToJavaBean {
	public static void main(String[] args) {
		String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}";
		Student stu = null;
		List<Student> list = null;
		try {
			ObjectMapper objectMapper=new ObjectMapper();
			StudentList studentList=objectMapper.readValue(str, StudentList.class);
			
			list=studentList.getStudent();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		for(Student s:list){
			System.out.println(s.getName()+"   "+s.getAge());
		}
	}
}
第二种:

public static void main(String[] args) {
		ArrayList<Student> list=new ArrayList<Student>();
		Student s1=new Student();
		s1.setName("leilei");
		s1.setAge(23);
		Student s2=new Student();
		s2.setName("leilei02");
		s2.setAge(23);
		list.add(s1);
		list.add(s2);
		
		StringWriter str=new StringWriter();
		
		ObjectMapper objectMapper=new ObjectMapper();
		try {
			objectMapper.writeValue(str, list);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		System.out.println(str);
	}
前几天刚遇到这个问题,就顺便把json完整的学了一遍。 希望能符合您的要求。
这个 StudentList 内容代码能提出来吗?谢谢[/quote] student的这list包含了若干对象,每个对象都有各自的属性值的。。 应该是你说的提出来的意思吧[/quote] SdutentList这个类你是怎么写的,这个类的代码是啥?
wuhaonan1026 2014-08-05
  • 打赏
  • 举报
回复
为什么我导入jar包之后 发现并没有ObjectMapper类呢?运行程序时候就报错ObjectMapper找不到
wangqiao4j 2014-08-04
  • 打赏
  • 举报
回复
学习了,特别是3楼的答复。很详细啊
nicolelili1 2014-05-16
  • 打赏
  • 举报
回复
多谢分享,正在学习
失落夏天 2013-05-17
  • 打赏
  • 举报
回复
引用 5 楼 loloone 的回复:
[quote=引用 3 楼 AA5279AA 的回复:] 第一种:
public class JsonToJavaBean {
	public static void main(String[] args) {
		String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}";
		Student stu = null;
		List<Student> list = null;
		try {
			ObjectMapper objectMapper=new ObjectMapper();
			StudentList studentList=objectMapper.readValue(str, StudentList.class);
			
			list=studentList.getStudent();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		for(Student s:list){
			System.out.println(s.getName()+"   "+s.getAge());
		}
	}
}
第二种:

public static void main(String[] args) {
		ArrayList<Student> list=new ArrayList<Student>();
		Student s1=new Student();
		s1.setName("leilei");
		s1.setAge(23);
		Student s2=new Student();
		s2.setName("leilei02");
		s2.setAge(23);
		list.add(s1);
		list.add(s2);
		
		StringWriter str=new StringWriter();
		
		ObjectMapper objectMapper=new ObjectMapper();
		try {
			objectMapper.writeValue(str, list);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		System.out.println(str);
	}
前几天刚遇到这个问题,就顺便把json完整的学了一遍。 希望能符合您的要求。
这个 StudentList 内容代码能提出来吗?谢谢[/quote] student的这list包含了若干对象,每个对象都有各自的属性值的。。 应该是你说的提出来的意思吧
loloone 2013-05-17
  • 打赏
  • 举报
回复
引用 3 楼 AA5279AA 的回复:
第一种:
public class JsonToJavaBean {
	public static void main(String[] args) {
		String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}";
		Student stu = null;
		List<Student> list = null;
		try {
			ObjectMapper objectMapper=new ObjectMapper();
			StudentList studentList=objectMapper.readValue(str, StudentList.class);
			
			list=studentList.getStudent();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		for(Student s:list){
			System.out.println(s.getName()+"   "+s.getAge());
		}
	}
}
第二种:

public static void main(String[] args) {
		ArrayList<Student> list=new ArrayList<Student>();
		Student s1=new Student();
		s1.setName("leilei");
		s1.setAge(23);
		Student s2=new Student();
		s2.setName("leilei02");
		s2.setAge(23);
		list.add(s1);
		list.add(s2);
		
		StringWriter str=new StringWriter();
		
		ObjectMapper objectMapper=new ObjectMapper();
		try {
			objectMapper.writeValue(str, list);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		System.out.println(str);
	}
前几天刚遇到这个问题,就顺便把json完整的学了一遍。 希望能符合您的要求。
这个 StudentList 内容代码能提出来吗?谢谢
lvgaga 2013-03-01
  • 打赏
  • 举报
回复
先顶一手。发现了这个东西真是给力。很方便。但是有几个问题还是没有解决。希望能看到更好的帖子
  • 打赏
  • 举报
回复
ObjectMapper 是 Jackson 中的吧
失落夏天 2013-01-06
  • 打赏
  • 举报
回复
第一种:
public class JsonToJavaBean {
	public static void main(String[] args) {
		String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}";
		Student stu = null;
		List<Student> list = null;
		try {
			ObjectMapper objectMapper=new ObjectMapper();
			StudentList studentList=objectMapper.readValue(str, StudentList.class);
			
			list=studentList.getStudent();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		for(Student s:list){
			System.out.println(s.getName()+"   "+s.getAge());
		}
	}
}
第二种:

public static void main(String[] args) {
		ArrayList<Student> list=new ArrayList<Student>();
		Student s1=new Student();
		s1.setName("leilei");
		s1.setAge(23);
		Student s2=new Student();
		s2.setName("leilei02");
		s2.setAge(23);
		list.add(s1);
		list.add(s2);
		
		StringWriter str=new StringWriter();
		
		ObjectMapper objectMapper=new ObjectMapper();
		try {
			objectMapper.writeValue(str, list);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		System.out.println(str);
	}
前几天刚遇到这个问题,就顺便把json完整的学了一遍。 希望能符合您的要求。
流星陨落 2013-01-05
  • 打赏
  • 举报
回复
jackson所需要的所有jar jackson-all-1.6.2.jar jackson-core-asl-1.6.2.jar jackson-mapper-asl-1.6.2.jar jakarta-oro.jar 1. 背景 目前维护的产品使用jackson处理json,现整理一下jackson相关资料,希望对初次接触jackson的新手有所帮助。 jackson主页: http://jackson.codehaus.org/ jackson document: http://wiki.fasterxml.com/JacksonJavaDocs JacksonInFiveMinutes: http://wiki.fasterxml.com/JacksonInFiveMinutes 本文主要内容译自JacksonInFiveMinutes,增加了部分示例,转载请注明出处。 受java平台上各种处理xml的类库(StAX, JAXB等)启发,Jackson提供一种处理json的java类库。Jackson的目标是为开发者提供快速、准确、轻量级和用起来最爽的json处理类库。本文将概括介绍Jackson的主要功能和相关功能的使用示例。 2. 使用方式 Jackson提供三种可选的json处理方式: 1) Streaming API 又称Incremental parsing/generation, 受StAX API启发,以非关联递增方式读写json内容。 通过 org.codehaus.jackson.JsonParser读取,通过org.codehaus.jackson.JsonGenerator写入。 2) Tree Model 通过基于内存的树形结构来描述json数据,和 XML DOM类似。通过org.codehaus.jackson.map.ObjectMapper构建树,树由JsonNode节点组成。 3) Data Binding 基于属性访问或注解的方式json和POJO对象互相转换, 受JAXB基于注解的处理方式启发。通过org.codehaus.jackson.map.ObjectMapper读写json数据。它包含两种类型: 3.1 Simple Data Binding 用于json和Java Maps, Lists, Strings, Numbers, Booleans and nulls的相互转换。 3.2 Full Data Binding 用于json和Java Bean的相互转换。 下面从使用的角度上比较三种处理方式: Streaming API 执行效率最高,读写速度最快,另外两种方式都基于它实现; Tree Model 是最灵活的; Data Binding 通常是最方便使用的;

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧