Object与json数据相互转换
wangxl@20180717
最近在测试nb终端与iot平台数据对接,经常用到object与json数据转换,参考华为提供的列程,整理以下两个函数,方便自己以后查阅也提供给大家学习参考;
- Object转成json字符串
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
public void Object2JsonStr()
{
//组装body体
ObjectMapper mapper = new ObjectMapper();
ObjectNode root = mapper.createObjectNode();
root.put("msgType", "1");
//组装消息体
root.put("hasMore", "0");
ArrayNode arrynode = mapper.createArrayNode();
//组装数据
ObjectNode Node = mapper.createObjectNode();
Node.put("serviceId", "StreetLight");
ObjectNode reqData = mapper.createObjectNode();
reqData.put("length", 12);
reqData.put("value", "123456789012");
Node.put("serviceData", reqData);
arrynode.add(Node);
root.put("data", arrynode);
String str = root.toString();
System.out.println(str);
}
//打印输出字符串:
/*
{"msgType":"1","hasMore":"0","data":[{"serviceId":"StreetLight","serviceData":{"length":12,"value":"123456789012"}}]}
*/
- json字符串转找成Object
1、利用json在线生成实体类,json在线网址:https://www.sojson.com/json2entity.html
//package ;
public class ServiceData
{
private int length;
private String value;
public void setLength(int length){
this.length = length;
}
public int getLength(){
return this.length;
}
public void setValue(String value){
this.value = value;
}
public String getValue(){
return this.value;
}
}
//==================================
//package ;
public class Data
{
private String serviceId;
private ServiceData serviceData;
public void setServiceId(String serviceId){
this.serviceId = serviceId;
}
public String getServiceId(){
return this.serviceId;
}
public void setServiceData(ServiceData serviceData){
this.serviceData = serviceData;
}
public ServiceData getServiceData(){
return this.serviceData;
}
}
//==================================
//package ;
import java.util.ArrayList;
import java.util.List;
public class DataRoot
{
private String msgType;
private String hasMore;
private List<Data> data;
public void setMsgType(String msgType){
this.msgType = msgType;
}
public String getMsgType(){
return this.msgType;
}
public void setHasMore(String hasMore){
this.hasMore = hasMore;
}
public String getHasMore(){
return this.hasMore;
}
public void setData(List<Data> data){
this.data = data;
}
public List<Data> getData(){
return this.data;
}
}
2、json字符串转找成Object
public void JsonStr2Object()
{
String jsonstr="{\"msgType\":\"1\",\"hasMore\":\"0\",\"data\":[{\"serviceId\":\"StreetLight\",\"serviceData\":{\"length\":12,\"value\":\"123456789012\"}}]}";
ObjectMapper mapper = new ObjectMapper();
try {
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
// 忽略不需要的字段
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
DataRoot dataroot = mapper.readValue(jsonstr, DataRoot.class);
String msgtype = dataroot.getMsgType();
System.out.println("msgtype="+msgtype);
List<Data> datas = dataroot.getData();
if(datas.size()>0)
{
Data data = datas.get(0);
ServiceData serdata=data.getServiceData();
String value=serdata.getValue();
System.out.println("value="+value);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
//打印输出字符串:
/*
msgtype=1
value=123456789012
*/