java bean、List、数组、map和Json的相互转化
工程
json包为 
代码
package com.my.json;
public class ChildBean {
private String childName;
private String childSex;
private int childAge;
public ChildBean()
{
}
public ChildBean(String childName, String childSex, int childAge) {
this.childName = childName;
this.childSex = childSex;
this.childAge = childAge;
}
public String getChildName() {
return childName;
}
public void setChildName(String childName) {
this.childName = childName;
}
public String getChildSex() {
return childSex;
}
public void setChildSex(String childSex) {
this.childSex = childSex;
}
public int getChildAge() {
return childAge;
}
public void setChildAge(int childAge) {
this.childAge = childAge;
}
@Override
public String toString() {
return "ChildBean [childName=" + childName + ", childSex=" + childSex + ", childAge=" + childAge + "]";
}
}
package com.my.json; import java.util.ArrayList;
import java.util.List; public class Person { private String name; private List<ChildBean> list = new ArrayList<ChildBean>(); private int num; private String sex; private int age; public Person() { } public Person(String name, int num, String sex, int age) {
super();
this.name = name;
this.num = num;
this.sex = sex;
this.age = age;
} public int getAge() {
return age;
} public String getName() {
return name;
} public int getNum() {
return num;
} public String getSex() {
return sex;
} public void setAge(int age) {
this.age = age;
} public void setName(String name) {
this.name = name;
} public void setNum(int num) {
this.num = num;
} public void setSex(String sex) {
this.sex = sex;
} public List<ChildBean> getList() {
return list;
} public void setList(List<ChildBean> list) {
this.list = list;
} @Override
public String toString() {
return "Person [name=" + name + ", num=" + num + ", sex=" + sex + ", age=" + age + ",list=" + list + "]";
} }
package com.my.json; import java.util.ArrayList;
import java.util.List;
import java.util.Map; import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig; public class JsonUtil { /**
* 简单类型:Json转化为bean
*
* @param jsonString
* @param pojoCalss
* @return
*/
public static Object jsonString2Object(String jsonString, Class pojoCalss) { JSONObject jsonObject = JSONObject.fromObject(jsonString); Object pojo = JSONObject.toBean(jsonObject, pojoCalss); return pojo; } /**
* 复杂类型:Json转化为bean<br>
* 用法示例:<br>
* Map<String, Class> classMap = new HashMap<String, Class>();
* classMap.put("list", ChildBean.class); //指定复杂类型属性的映射关系,可以使多个放到map中<br>
* Person person=(Person)JsonUtil.jsonString2Object(str2, Person.class,
* classMap);<br>
*
* @param jsonString
* @param pojoCalss
* @return
*/
public static Object jsonString2Object(String jsonString, Class pojoCalss, Map<String, Class> classMap) {
JSONObject jobj = JSONObject.fromObject(jsonString);
return JSONObject.toBean(jobj, pojoCalss, classMap);
} /**
* 简单|复杂类型:将java对象转换成json字符串<br>
* 支持复杂类型:Java bean 中既有属性又有list
*
* @param javaObj
* @return
*/
public static String object2JsonString(Object javaObj) { JSONObject json = JSONObject.fromObject(javaObj); return json.toString(); } /**
* 从json对象集合表达式中得到一个java对象列表
*
* @param jsonString
* @param pojoClass
* @return
*/
public static List jsonList2JavaList(String jsonString, Class pojoClass) { JSONArray jsonArray = JSONArray.fromObject(jsonString); JSONObject jsonObject; Object pojoValue; List list = new ArrayList(); for (int i = 0; i < jsonArray.size(); i++) { jsonObject = jsonArray.getJSONObject(i); pojoValue = JSONObject.toBean(jsonObject, pojoClass); list.add(pojoValue); } return list; } /**
* 从java对象集合表达式中得到一个json列表
*
* @param list
* @return
*/
public static String javaList2JsonList(List list) { JSONArray jsonArray = JSONArray.fromObject(list);
return jsonArray.toString();
} /**
* 数组转换为JSON
*
* @param array
* @return
*/
public static String javaArray2Json(Object[] array) {
JSONArray jsonarray = JSONArray.fromObject(array);
return jsonarray.toString();
} /**
* Json数组转化为Java数组
*
* @param jsonArray
* @param clas
* @return
*/
public static Object jsonArray2JavaArrray(String jsonArray, Class clas) {
JsonConfig jconfig = new JsonConfig();
jconfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);
jconfig.setRootClass(clas);
JSONArray jarr = JSONArray.fromObject(jsonArray);
return JSONSerializer.toJava(jarr, jconfig);
} /**
* Map转换成json
* @param map
* @return
*/
public static String javaMap2Json(Map<String, Object> map) {
return JSONObject.fromObject(map).toString();
} /**
* json转化为map
* @param jsonString
* @param pojoCalss
* @return
*/
public static Object javaMap2Json(String jsonString, Class pojoCalss) {
return jsonString2Object(jsonString, pojoCalss);//调用方法jsonString2Object
} }
package com.my.json; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class Test {
@SuppressWarnings("unchecked")
public static void main(String[] args) { // 普通bean转化Json
System.out.println("普通bean转化Json:");
ChildBean p = new ChildBean("wwwww", "boy", 23);
String str = JsonUtil.object2JsonString(p);
System.out.println(str); // 普通Json转化bean,如 {"childAge":23,"childName":"wwwww","childSex":"boy"}
System.out.println("普通Json转化bean:");
ChildBean c = (ChildBean) JsonUtil.jsonString2Object(str, ChildBean.class);
System.out.println(c); // Java List转化为Json
System.out.println("Java List转化为Json:");
List<ChildBean> list = new ArrayList<ChildBean>();
for (int i = 0; i < 5; i++) {
ChildBean childBean = new ChildBean("wwwww" + i, "boy", i);
list.add(childBean);
}
String jsonList = JsonUtil.javaList2JsonList(list);
System.out.println(jsonList); // json 列表转化为Java List
System.out.println("json 列表转化为Java List:");
List<ChildBean> l = (List<ChildBean>) JsonUtil.jsonList2JavaList(jsonList, ChildBean.class);
System.out.println(l); // 复杂bean转化为Json
System.out.println("复杂bean转化为Json:");
List<ChildBean> list2 = new ArrayList<ChildBean>();
for (int i = 0; i < 10; i++) {
ChildBean childBean = new ChildBean("aaaaaa" + i, "boy", i);
list2.add(childBean);
}
Person me = new Person("zhang", 1, "man", 1);
me.setList(list2); String str2 = JsonUtil.object2JsonString(me);
System.out.println("str2=" + str2); // 复杂Json转化bean
System.out.println("复杂Json转化bean:");
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("list", ChildBean.class); // 指定复杂类型属性的映射关系,可以使多个放到map中
Person person = (Person) JsonUtil.jsonString2Object(str2, Person.class, classMap);
System.out.println(person);
System.out.println(person.getList().get(0).getChildName()); // Java数组转换为JSON
System.out.println("java数组转换为JSON:");
// String[] array = {"asd","dfgd","asd","234"};
ChildBean[] array = new ChildBean[10];
for (int i = 0; i < 10; i++) {
ChildBean childBean = new ChildBean("aaaaaa" + i, "boy", i);
array[i] = childBean;
}
String jsonArray = JsonUtil.javaArray2Json(array);
System.out.println(jsonArray); // Json数组转化为Java数组
System.out.println("Json数组转化为Java数组:");
ChildBean[] cb = (ChildBean[]) JsonUtil.jsonArray2JavaArrray(jsonArray, ChildBean.class);
System.out.println(Arrays.toString(cb)); //Map转换成json
System.out.println("Map转换成json:");
Map<String, Object> map = new HashMap<String, Object>();
map.put("userId", 1000);
map.put("userName", "张三");
map.put("userSex", "男");
String jsonStr = JsonUtil.javaMap2Json(map);
System.out.println(jsonStr); //json转化为map
System.out.println("json转化为map:");
Map<String, Object> jmap = (Map<String, Object>)JsonUtil.javaMap2Json(jsonStr, Map.class);
System.out.println(jmap);
}
}
注意:
1.代转化的bean如果自定义了构造方法,必须写上默认的构造方法,否则Json转化时候,曝出init()方法找不到!
2.对于Date和Timestamp日期类型字段需要单独处理(本例不含这种类型,请参看我的博客《含有Date和Timestamp的Java和Json互相转化》)
java bean、List、数组、map和Json的相互转化的更多相关文章
- JSONObject.fromObject(map)(JSON与JAVA数据的转换)
JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.) 上一篇文章中有这么 ...
- java中Array/List/Map/Object与Json互相转换详解
http://blog.csdn.net/xiaomu709421487/article/details/51456705 JSON(JavaScript Object Notation): 是一种轻 ...
- 转载:JSONObject.fromObject(map)(JSON与JAVA数据的转换)
转载网址:http://blog.sina.com.cn/s/blog_821025b70100wh6v.html JSON与JAVA数据的转换(JSON 即 JavaScript Object Na ...
- json学习初体验--第三者jar包实现bean、List、map创json格式
1.的需要jar包裹json-lib.jar 下载链接: http://sourceforge.net/projects/json-lib/files/json-lib/ 此包还须要下面的依赖包, c ...
- java中Array/List/Map/Object与Json互相转换详解(转载)
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- Java bean 转 Map
Java bean 转 Map 时需要使用Fastjson //方法 一 Map<String, Object> a = (Map<String, Object>)JSON.t ...
- Java处理JSON的工具类(List、Map和JSON之间的转换)——依赖jsonlib支持Map嵌套
原文链接:http://www.itjhwd.com/java_json/ 代码 package com.itjh.mmp.util; import java.io.BufferedReader; i ...
- java处理json的工具类(list,map和json的之间的转换)
需要下载第三方的jar :net.sf.json import java.io.BufferedReader; import java.io.InputStream; import java.io.I ...
- JSON数组对象和JSON字符串的转化,map和JSON对象之间的转化
这种用法包括前端和后端: 前端: 1. 转化为JSON对象方便操作 var jsonObj = JSON.parse(str); 得到的是一个json数组对象,可以通过 for (var p in j ...
随机推荐
- Jade之Doctype
Doctype jade: doctype html html: <!DOCTYPE html>
- HDU 5023 A Corrupt Mayor's Performance Art (据说是线段树)
题意:给定一个1-n的墙,然后有两种操作,一种是P l ,r, a 把l-r的墙都染成a这种颜色,另一种是 Q l, r 表示,输出 l-r 区间内的颜色. 析:应该是一个线段树+状态压缩,但是我用s ...
- Git命令行初体验
1. git 版本控制系统 ==============运行环境======== 系统:windows git : Git-1.7.3.1-preview20101002.rar 下载地址:http ...
- 如何查看 oracle 官方文档
Concept 包含了 oracle 数据库里面的一些基本概念和原理, 比如 数据库逻辑结构, 物理结构, 实例结构, 优化器, 事务等. PDF 460页 Reference 包含了动态性能视图, ...
- socket基础
一.socket简介 1. 套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和 ...
- [转]Python程序员必须知道的30条编程技巧
30 tips & tricks for Python Programming 1 直接交换两个数字位置 x, y = 10, 20 print(x, y) x, y = y, x prin ...
- 黑马程序员——for循环的使用与理解
Console.WriteLine("请输入要打印菱形的行数(不能是偶数)");---------------------- <a href="http://edu ...
- 【Python自动化运维之路Day2】
1. 常量命名规则 在Python中,会在变量命名上标明某变量是常量,通常采用全是大写的方式来标明,如: CONNECT= '127.0.0.1' PORT = ' 2.Python编译 python ...
- 大熊君说说JS与设计模式之------策略模式Strategy
一,总体概要 1,笔者浅谈 策略模式,又叫算法簇模式,就是定义了不同的算法,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 策略模式和工厂模式有一定的类似,策略模式相对简单容易理解,并 ...
- 初识ASP.NET 5中的Sake与KoreBuild
从github上签出基于ASP.NET 5的MVC 6的源代码进行编译,发现有2个编译命令: build.cmd是针对Windows的编译命令,build.sh是针对Mac/Linux的编译命令,这本 ...