2017_11_22 Json数据与Java对象互转的两种方式(一)

操纵json数据的两种方式:

一种是通过JsonObject(JsonArray)



注:JsonArray是用来专门操作集合的

package test;


import java.util.ArrayList;
import java.util.List;


import net.sf.json.JSONArray;
import entity.People;


public class JsonToObject1 {


public static void main(String[] args) {
People people1 = new People("Brett","McLaughlin","aaaa");
People people2 = new People("Jason","Hunter","bbbb");
People people3 = new People("Elliotte","Harold","cccc");
List<People> list = new ArrayList<People>();
list.add(people1);
list.add(people2);
list.add(people3);
objectToJson(list);
String json = "[{\"email\":\"aaaa\",\"firstName\":\"Brett\",\"lastName\":\"McLaughlin\"},"
+ "{\"email\":\"bbbb\",\"firstName\":\"Jason\",\"lastName\":\"Hunter\"},"
+ "{\"email\":\"cccc\",\"firstName\":\"Elliotte\",\"lastName\":\"Harold\"}]";
List<People> peopleList = jsonToObject(json);
for (People people : peopleList) {
System.out.println(people.getEmail()+"---"+people.getFirstName()+"---"+people.getLastName());
}
}


/**
* json转java对象
* @param json
*/
private static List<People> jsonToObject(String json) {
JSONArray jsonArray = JSONArray.fromObject(json);
List<People> peoples = (List<People>) jsonArray.toCollection(jsonArray, People.class);
return peoples;
}


/**
* java对象转json
* @param list
*/
private static void objectToJson(List<People> list) {
JSONArray jsonStr = JSONArray.fromObject(list);
System.out.println(jsonStr);
}

}




另一种是通过Jackson的ObjectMapper类


package test;


import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import entity.People;


public class JsonToObject2 {


public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();

/**
* 通过jackson将json格式的list转java对象
*/
String json = "[{\"email\":\"aaaa\",\"firstName\":\"Brett\",\"lastName\":\"McLaughlin\"},"
+ "{\"email\":\"bbbb\",\"firstName\":\"Jason\",\"lastName\":\"Hunter\"},"
+ "{\"email\":\"cccc\",\"firstName\":\"Elliotte\",\"lastName\":\"Harold\"}]";
try {
People[] peoples = mapper.readValue(json, People[].class);
for (People people : peoples) {
System.out.println(">"+people.getEmail()+"---"+people.getFirstName()+"---"+people.getLastName());
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


/**
* 通过jackson将java对象转json格式的list
*/
People people1 = new People("Brett","McLaughlin","aaaa");
People people2 = new People("Jason","Hunter","bbbb");
People people3 = new People("Elliotte","Harold","cccc");
List<People> list = new ArrayList<People>();
list.add(people1);
list.add(people2);
list.add(people3);
String jsonStr;
try {
jsonStr = mapper.writeValueAsString(list);
System.out.println(jsonStr);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}


}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
因为JDK1.3/1.4不支持泛型,所以写法比支持对象嵌套的要复杂,附件是自己研究的一个例子 /* ===========================JSON字符串换为Java Object===============================*/ String sibill = ""; sibill = "{\"blno\":\"123\",\"cutofftime\":\"2011-1-12\",\"vsl\":\"vsl\",\"voy\":\"voy\",\"port\":\"port\",\"consigneename\":\"consigneename\",\"consigneeaddress\":\"consigneeaddress\",\"consigneecityc\":\"consigneecitycountry\","+ "\"cntr\":[{\"cntrno\":\"111111\",\"cl\":\"拼箱\",\"sealnum\":\"sealnum1\",\"size\":\"40\",\"box\":\"H1\",\"cgo\":[{\"cgonum\":\"cgonum11\",\"cgoweight\":\"cgoweight1\",\"cgosize\":\"cgosize1\",\"cgohscode\":\"cgohscode1\",\"cgoowner\":\"cgoowner1\"}]},"+ "{\"cntrno\":\"222222\",\"cl\":\"整箱\",\"sealnum\":\"sealnum2\",\"size\":\"48\",\"box\":\"G1\",\"cgo\":[{\"cgonum\":\"cgonum21\",\"cgoweight\":\"cgoweight1\",\"cgosize\":\"cgosize1\",\"cgohscode\":\"cgohscode1\",\"cgoowner\":\"cgoowner1\"},{\"cgonum\":\"cgonum22\",\"cgoweight\":\"cgoweight2\",\"cgosize\":\"cgosize2\",\"cgohscode\":\"cgohscode2\",\"cgoowner\":\"cgoowner2\"}]}]"+ "}"; /* 第一步 (直接换为Java Object) */ SiBillBean sibillbean = (SiBillBean)JSONObject.toBean(JSONObject.fromObject(sibill),SiBillBean.class); /* 第二布 (取出嵌套对象属性值) */ JSONArray arrCntr = sibillbean.getCntr(); for (int i = 0; i < arrCntr.size(); i++) { JSONObject cntr = (JSONObject)arrCntr.get(i); CntrBean cntrBean = (CntrBean)JSONObject.toBean(cntr,CntrBean.class); System.out.println(cntrBean); JSONArray arrCgo = cntrBean.getCgo(); for (int j = 0; j < arrCgo.size(); j++) { JSONObject cgo = (JSONObject)arrCgo.get(j); CgoBean cgoBean = (CgoBean)JSONObject.toBean(cgo,CgoBean.class); System.out.println(cgoBean); } } /* 第二布 end */ /* ===========================Java Object换为JSON字符串===============================*/ //CGO 1/2/3 CgoBean cgoBean1 = new CgoBean(); cgoBean1.setCgonum("cgo11"); CgoBean cgoBean2 = new CgoBean(); cgoBean2.setCgonum("cgo21"); CgoBean cgoBean3 = new CgoBean(); cgoBean3.setCgonum("cgo22"); //CNTR1 CntrBean cntrBean1 = new CntrBean(); cntrBean1.setCntrno("cntr1"); JSONArray jsonArrayCntr1 = new JSONArray(); jsonArrayCntr1.add(0, cgoBean1); cntrBean1.setCgo(jsonArrayCntr1); //CNTR2 CntrBean cntrBean2 = new CntrBean(); cntrBean2.setCntrno("cntr2"); JSONArray jsonArrayCntr2 = new JSONArray(); jsonArrayCntr2.add(0, cgoBean2); jsonArrayCntr2.add(1, cgoBean3); cntrBean2.setCgo(jsonArrayCntr2); //SIBILL SiBillBean sibillb = new SiBillBean(); sibillb.setBlno("COSU 123456789"); JSONArray jsonArraySiBill = new JSONArray(); jsonArraySiBill.add(0, cntrBean1); jsonArraySiBill.add(1, cntrBean2); sibillb.setCntr(jsonArraySiBill); System.out.println(JSONObject.fromObject(sibillb));

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值