JSON 解析复杂的json字符串,解析为JavaBean

1. JSON 字符串,如下所示:

{"DevEUI_uplink": 
	{	"Time": "2018-11-03T12:46:27.665+08:00",
		"DevEUI": "1000FF000B000002",
		"FPort": "2","FCntUp": "5","ADRbit": "1",
		"MType": "4","FCntDn": "6",
		"payload_hex": "810100ffff0c4b4807000003f7f985ffffffff1401000005040101bb2d",
		"mic_hex": "b3aed8f1","Lrcid": "00000065","LrrRSSI": "-100.000000","LrrSNR": "1.500000",
		"SpFact": "11","SubBand": "G0","Channel": "LC3","DevLrrCnt": "3","Lrrid": "00010016","Late": "0","LrrLAT": "0.000000","LrrLON": "0.000000",
		"Lrrs": {
			"Lrr": [
				{"Lrrid": "00010016","Chain": "0","LrrRSSI": "-100.000000","LrrSNR": "1.500000","LrrESP": "-102.324738"},
				{"Lrrid": "0001001A","Chain": "0","LrrRSSI": "-107.000000","LrrSNR": "-2.000000","LrrESP": "-111.124428"},
				{"Lrrid": "00010014","Chain": "0","LrrRSSI": "-109.000000","LrrSNR": "-14.500000","LrrESP": "-123.651421"}
			]
		},
		"CustomerID": "100000017",
		"CustomerData": {"alr":{"pro":"FOXCONN/dBoard","ver":"1"}},
		"ModelCfg": "0",
		"DevAddr": "0326001C"
	}
}

2. 解析成Javabean:

注意:对于复杂的json字符串解析,有时候,net.sf.json.JSONObject解析会失败,可以使用 com.google.gson.Gson解析

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

@Test
	public void testParseJsonStr() {
		String jsonStr = "{\"DevEUI_uplink\": {\"Time\": \"2018-11-03T12:46:22.382+08:00\",\"DevEUI\": \"1000FF000B000002\",\"FPort\": \"2\",\"FCntUp\": \"4\",\"ADRbit\": \"1\",\"MType\": \"4\",\"FCntDn\": \"5\",\"payload_hex\": \"810100ffff0c4b4807000003f7f985ffffffff14010000040301011890\",\"mic_hex\": \"7873fd23\","
				+ "\"Lrcid\": \"00000065\",\"LrrRSSI\": \"-100.000000\",\"LrrSNR\": \"2.500000\",\"SpFact\": \"11\",\"SubBand\": \"G0\",\"Channel\": \"LC4\",\"DevLrrCnt\": \"5\",\"Lrrid\": \"00010016\",\"Late\": \"0\",\"LrrLAT\": \"0.000000\",\"LrrLON\": \"0.000000\","
				+ "\"Lrrs\": {\"Lrr\": [{\"Lrrid\": \"00010016\",\"Chain\": \"0\",\"LrrRSSI\": \"-100.000000\",\"LrrSNR\": \"2.500000\",\"LrrESP\": \"-101.937759\"},{\"Lrrid\": \"0001001E\",\"Chain\": \"0\",\"LrrRSSI\": \"-102.000000\",\"LrrSNR\": \"-1.750000\",\"LrrESP\": \"-105.972855\"},{\"Lrrid\": \"0001000F\",\"Chain\": \"0\",\"LrrRSSI\": \"-105.000000\",\"LrrSNR\": \"-15.000000\",\"LrrESP\": \"-120.135208\"}]},\"CustomerID\": \"100000017\",\"CustomerData\": {\"alr\":{\"pro\":\"FOXCONN/dBoard\",\"ver\":\"1\"}},\"ModelCfg\": \"0\",\"DevAddr\": \"0326001C\"}}";
		
		
		JSONObject jsonObj = JSONObject.fromObject(jsonStr);
		Object object = jsonObj.get("DevEUI_uplink");
		//System.out.println("****" + object.toString());
		
		JsonObject obj = new JsonParser().parse(object.toString()).getAsJsonObject();
		ReceviceDataModel rd1 = new Gson().fromJson(obj, ReceviceDataModel.class);
		System.out.println("---rd1:" + rd1.toString());
		LrrModel[] lrrModels = rd1.getLrrs().get("Lrr");
		System.out.println("----" + lrrModels[1].toString());
		
	}

3. JavaBean定义:

public class ReceviceDataModel extends BaseDtoAdapter {

	private static final long serialVersionUID = -3587750514661171087L;
	
	private Date Time;
	private String DevEUI;
	private Integer FPort;
	private Integer FCntUp;
	private Integer FCntDn;
	private String ADRbit;
	private String MType;
	private String payload_hex;
	private String mic_hex;
	private String Lrcid;
	private String LrrRSSI;
	private String LrrSNR;
	private String SpFact;
	private String SubBand;
	private String Channel;
	private String DevLrrCnt;
	private Map<String, LrrModel[]> Lrrs;
	private String CustomerID;
	private Map<String, AlrModel> CustomerData;
	private String ModelCfg;
	private String DevAddr;
	
	
	get....
    set....
	
}


public class LrrModel extends BaseDtoAdapter {

	private static final long serialVersionUID = 3105745288168791895L;
	
	private String Lrrid;
	private String Chain;
	private String LrrRSSI;
	private String LrrSNR;
	private String LrrESP;

	get....
    set....
}

public class AltModel extends BaseDtoAdapter {
	
	private static final long serialVersionUID = 7019821138967165678L;
	
	private String pro;
	private String ver;
	
	get...
    set...
}


BaseDtoAdapter 在 jar:systemBaseBean-1.1  package:com.plaform.database.dao.impl

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值