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

本文介绍两种操纵JSON数据的方法:一是使用net.sf.json包中的JSONArray进行转换;二是利用Jackson库的ObjectMapper实现序列化与反序列化。通过实例展示了如何将Java对象转化为JSON字符串,以及如何从JSON字符串中解析出Java对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操纵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();
}
}


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值