java对象转换_Jason 和 Java 对象转化示例

1.工程

94877e2e2a22166d55c7e32f13db78bb.png

2.代码:

JsonUtil.java

packagecom.my.json;importjava.util.ArrayList;importjava.util.List;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;public classJsonUtil {/*** 从一个JSON 对象字符格式中得到一个java对象

*

*@paramjsonString

* json字符串

*

*@parampojoCalss

* java对象的class

*

*@return

*/

public staticObject jsonString2Object(String jsonString, Class pojoCalss) {

Object pojo;

JSONObject jsonObject=JSONObject.fromObject(jsonString);

pojo=JSONObject.toBean(jsonObject, pojoCalss);returnpojo;

}/***

* 将java对象转换成json字符串

* 支持复杂类型:Java bean 中既有属性又有list

*

*@paramjavaObj

*

*@return

*/

public staticString object2JsonString(Object javaObj) {

JSONObject json;

json=JSONObject.fromObject(javaObj);returnjson.toString();

}/***

* 从json对象集合表达式中得到一个java对象列表

*

*@paramjsonString

*

*@parampojoClass

*

*@return

*/

public staticList jsonList2JavaList(String jsonString, Class pojoClass) {

JSONArray jsonArray=JSONArray.fromObject(jsonString);

JSONObject jsonObject;

Object pojoValue;

List list= newArrayList();for (int i = 0; i < jsonArray.size(); i++) {

jsonObject=jsonArray.getJSONObject(i);

pojoValue=JSONObject.toBean(jsonObject, pojoClass);

list.add(pojoValue);

}returnlist;

}/***

* 从json对象集合表达式中得到一个java对象列表

*

*@paramjsonString

*

*@parampojoClass

*

*@return

*/

public staticString javaList2JsonList(List list) {

JSONArray jsonArray=JSONArray.fromObject(list);returnjsonArray.toString();

}

/**

* Json转化为map

*/

public static Map parseJSON2Map(String jsonStr){

Map map = new HashMap();

//最外层解析

JSONObject json = JSONObject.fromObject(jsonStr);

for(Object k : json.keySet()){

Object v = json.get(k);

//如果内层还是数组的话,继续解析

if(v instanceof JSONArray){

List> list = new ArrayList>();

Iterator it = ((JSONArray)v).iterator();

while(it.hasNext()){

JSONObject json2 = it.next();

list.add(parseJSON2Map(json2.toString()));

}

map.put(k.toString(), list);

} else {

map.put(k.toString(), v);

}

}

return map;

}

}

Person.java

packagecom.my.json;importjava.util.ArrayList;importjava.util.List;public classPerson {privateString name;private List list = new ArrayList();public ListgetList() {returnlist;

}public void setList(Listlist) {this.list =list;

}

@OverridepublicString toString() {return "Person [name=" + name + ", num=" + num + ", sex=" +sex+ ", age=" + age + "]";

}private intnum;privateString sex;private intage;publicPerson() {//TODO Auto-generated constructor stub

}public Person(String name, int num, String sex, intage) {super();this.name =name;this.num =num;this.sex =sex;this.age =age;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public intgetNum() {returnnum;

}public void setNum(intnum) {this.num =num;

}publicString getSex() {returnsex;

}public voidsetSex(String sex) {this.sex =sex;

}public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}

}

Test.java

packagecom.my.json;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importnet.sf.json.JSONObject;public classTest {public static voidmain(String[] args) {//将一个java对象转换为Json字符串

Person p = new Person("gu1", 123, "male", 23);

String str=JsonUtil.object2JsonString(p);

System.out.println(str);//将一个JSON字符串转化为Java对象

String s = "{\"age\":23,\"name\":\"gu1\",\"num\":123,\"sex\":\"male\"}";

Person p2= (Person) JsonUtil.jsonString2Object(s, Person.class);

System.out.println(p2);//将一个对象列表转化为JSON列表

List list = new ArrayList();for (int i = 0; i < 5; i++) {

Person persion= new Person("zhang" + i, 1 + i, "man" + i, 1 +i);

list.add(persion);

}

String jsonList=JsonUtil.javaList2JsonList(list);

System.out.println(jsonList);//将一个JSON列表转化为Java列表

String jst = "[{\"age\":1,\"list\":[],\"name\":\"zhang0\",\"num\":1,\"sex\":\"man0\"},{\"age\":2,\"list\":[],\"name\":\"zhang1\",\"num\":2,\"sex\":\"man1\"},{\"age\":3,\"list\":[],\"name\":\"zhang2\",\"num\":3,\"sex\":\"man2\"},{\"age\":4,\"list\":[],\"name\":\"zhang3\",\"num\":4,\"sex\":\"man3\"},{\"age\":5,\"list\":[],\"name\":\"zhang4\",\"num\":5,\"sex\":\"man4\"}]";

List l = (List) JsonUtil.jsonList2JavaList(jst,

Person.class);

System.out.println(l.size());//复杂类型转JSON:Java bean 中既有属性又有list(项目中经常见到)

List list2 = new ArrayList();for (int i = 0; i < 10; i++) {

Person persion= new Person("zhang" + i, 1 + i, "man" + i, 1 +i);

list2.add(persion);

}

Person me= new Person("zhang", 1, "man", 1);

me.setList(list2);

String str2=JsonUtil.object2JsonString(me);

System.out.println(str2);//复杂类型转Java:JSON 中既有属性又有list(项目中经常见到)

String ss = "{\"age\":1,\"list\":[{\"age\":1,\"list\":[],\"name\":\"zhang0\",\"num\":1,\"sex\":\"man0\"},{\"age\":2,\"list\":[],\"name\":\"zhang1\",\"num\":2,\"sex\":\"man1\"},{\"age\":3,\"list\":[],\"name\":\"zhang2\",\"num\":3,\"sex\":\"man2\"},{\"age\":4,\"list\":[],\"name\":\"zhang3\",\"num\":4,\"sex\":\"man3\"},{\"age\":5,\"list\":[],\"name\":\"zhang4\",\"num\":5,\"sex\":\"man4\"},{\"age\":6,\"list\":[],\"name\":\"zhang5\",\"num\":6,\"sex\":\"man5\"},{\"age\":7,\"list\":[],\"name\":\"zhang6\",\"num\":7,\"sex\":\"man6\"},{\"age\":8,\"list\":[],\"name\":\"zhang7\",\"num\":8,\"sex\":\"man7\"},{\"age\":9,\"list\":[],\"name\":\"zhang8\",\"num\":9,\"sex\":\"man8\"},{\"age\":10,\"list\":[],\"name\":\"zhang9\",\"num\":10,\"sex\":\"man9\"}],\"name\":\"zhang\",\"num\":1,\"sex\":\"man\"}";

Map map=(Map)JSONObject.fromObject(ss);

System.out.println("------------------------------");

System.out.println(map);

String name= (String)map.get("name");int num = (Integer)map.get("num");

String sex= (String)map.get("sex");int age = (Integer)map.get("age");

System.out.println("name="+name);

System.out.println("num="+"num");

System.out.println("sex="+"sex");

System.out.println("age="+"age");

System.out.println("list="+map.get("list"));//获取list字符串,再转化为Java 对象,其实是再次构建成Java bean

String listStr = map.get("list").toString();//一定要用toString,不能强转

List ll = JsonUtil.jsonList2JavaList(listStr, Person.class);//构建新的bean:不知是否有其他方案,根据需要是否构建

Person pp = newPerson(name,num,sex,age);

pp.setList(ll);//输出bean

for(Person ps : pp.getList())

{

System.out.println(ps.getName());

}

}

}

输出:

{"age":23,"list":[],"name":"gu1","num":123,"sex":"male"}

Person [name=gu1, num=123, sex=male, age=23]

[{"age":1,"list":[],"name":"zhang0","num":1,"sex":"man0"},{"age":2,"list":[],"name":"zhang1","num":2,"sex":"man1"},{"age":3,"list":[],"name":"zhang2","num":3,"sex":"man2"},{"age":4,"list":[],"name":"zhang3","num":4,"sex":"man3"},{"age":5,"list":[],"name":"zhang4","num":5,"sex":"man4"}]

5

{"age":1,"list":[{"age":1,"list":[],"name":"zhang0","num":1,"sex":"man0"},{"age":2,"list":[],"name":"zhang1","num":2,"sex":"man1"},{"age":3,"list":[],"name":"zhang2","num":3,"sex":"man2"},{"age":4,"list":[],"name":"zhang3","num":4,"sex":"man3"},{"age":5,"list":[],"name":"zhang4","num":5,"sex":"man4"},{"age":6,"list":[],"name":"zhang5","num":6,"sex":"man5"},{"age":7,"list":[],"name":"zhang6","num":7,"sex":"man6"},{"age":8,"list":[],"name":"zhang7","num":8,"sex":"man7"},{"age":9,"list":[],"name":"zhang8","num":9,"sex":"man8"},{"age":10,"list":[],"name":"zhang9","num":10,"sex":"man9"}],"name":"zhang","num":1,"sex":"man"}

------------------------------

{"age":1,"list":[{"age":1,"list":[],"name":"zhang0","num":1,"sex":"man0"},{"age":2,"list":[],"name":"zhang1","num":2,"sex":"man1"},{"age":3,"list":[],"name":"zhang2","num":3,"sex":"man2"},{"age":4,"list":[],"name":"zhang3","num":4,"sex":"man3"},{"age":5,"list":[],"name":"zhang4","num":5,"sex":"man4"},{"age":6,"list":[],"name":"zhang5","num":6,"sex":"man5"},{"age":7,"list":[],"name":"zhang6","num":7,"sex":"man6"},{"age":8,"list":[],"name":"zhang7","num":8,"sex":"man7"},{"age":9,"list":[],"name":"zhang8","num":9,"sex":"man8"},{"age":10,"list":[],"name":"zhang9","num":10,"sex":"man9"}],"name":"zhang","num":1,"sex":"man"}

name=zhang

num=num

sex=sex

age=age

list=[{"age":1,"list":[],"name":"zhang0","num":1,"sex":"man0"},{"age":2,"list":[],"name":"zhang1","num":2,"sex":"man1"},{"age":3,"list":[],"name":"zhang2","num":3,"sex":"man2"},{"age":4,"list":[],"name":"zhang3","num":4,"sex":"man3"},{"age":5,"list":[],"name":"zhang4","num":5,"sex":"man4"},{"age":6,"list":[],"name":"zhang5","num":6,"sex":"man5"},{"age":7,"list":[],"name":"zhang6","num":7,"sex":"man6"},{"age":8,"list":[],"name":"zhang7","num":8,"sex":"man7"},{"age":9,"list":[],"name":"zhang8","num":9,"sex":"man8"},{"age":10,"list":[],"name":"zhang9","num":10,"sex":"man9"}]

zhang0

zhang1

zhang2

zhang3

zhang4

zhang5

zhang6

zhang7

zhang8

zhang9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值