Object与json数据相互转换

Objectjson数据相互转换

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

*/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值