Bean定义:

 public class GetM100DataResponse {
private String service;//接口代码
private String sessionId;//会话Id
private String errorCode;//错误码
private String errorMsg;//错误消息
private String summary;//摘要 private List<M100DataObject> dataPoints; //数据列表 //get set 略
}
 public class M100DataObject {
private String dataType; //数据类型 String
private String sendDateTime; //发送时间 String
private M100DataObjectKV dataKV; //数值对象 Object
private String serviceNo; //用户服务号 String
private Integer userSeq; //用户序号 Integer
private String eqmtNo; //设备号 String //get set 略
}

JSON字符串:

 {
"dataPoints":[
{
"dataKV":{
"pulse":"103",
"measurementTime":"2015-12-02 12:06:32",
"low":"91",
"high":"126",
"id":"d750fed2-0c95-4722-92ac-3078fa34390b"
},
"dataType":"1",
"eqmtNo":"",
"sendDateTime":"2015-12-02 12:06:33",
"serviceNo":"5716b0badb4b426cbfaaebb1be7d57b3",
"userSeq":"1"
}
],
"diagResult":"",
"errorCode":"1",
"errorMsg":"成功!",
"propose":"",
"service":"GET_M100_DATA",
"sessionId":"1",
"summary":""
}

转换代码如下:

 public static JsonConfig getDecodeJSONConfig(){
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(String.class, new JsonValueProcessor() {
public Object processArrayValue(Object value,
JsonConfig arg1) {
// TODO Auto-generated method stub
return process(value);
} public Object processObjectValue(String key,
Object value, JsonConfig arg2) {
// TODO Auto-generated method stub
return process(value);
} public Object process(Object value) {
try {
if (value instanceof String) {
return URLDecoder.decode(value.toString(),"UTF-8");
}
return value == null ? "" : value.toString();
} catch (Exception e) {
return "";
}
}
}
);
return jsonConfig;
}
public GetM100DataResponse parseData(String resData){//resData为JSON字符串
JsonConfig jsonConfig = getDecodeJSONConfig();
JSONObject json = JSONObject.fromObject(resData, jsonConfig);
/*
* 在JSONObject.toBean的时候,如果转换的类中有集合,
* 可以先定义:Map<String, Class> classMap = new HashMap<String, Class>();
* 然后在classMap中put你要转换的类中的集合名,如:
*/
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("dataPoints", M100DataObject.class);//dataPoints 为 属性名称
/*
* 然后在toBean()的时候把参数加上, 如:
*/
GetM100DataResponse response = (GetM100DataResponse)JSONObject.toBean(json, GetM100DataResponse.class, classMap);
return response;
}

over

JSONObject 转换 JSON复杂对象的更多相关文章

  1. JSONObject转换JSON之将Date转换为指定格式(转)

    项目中,经常会用JSONObject插件将JavaBean或List<JavaBean>转换为JSON格式的字符串,而JavaBean的属性有时候会有java.util.Date这个类型的 ...

  2. JSON转换类(二)--List转换成Json、对象集合转换Json等

    #region List转换成Json /// <summary> /// List转换成Json /// </summary> public static string Li ...

  3. List转换成Json、对象集合转换Json等

    #region List转换成Json /// <summary> /// List转换成Json /// </summary> public static string Li ...

  4. C# 转换Json类

    using System; using System.Collections.Generic; using System.Text; using System.Data; using System.R ...

  5. Java对象转换成xml对象和Java对象转换成JSON对象

    1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...

  6. json字符串转json对象,json对象转换成java对象

    @RequestMapping(value = "updateInvestorApplyAccountNo", method = RequestMethod.POST) @Resp ...

  7. FastJson、Jackson、Gson进行Java对象转换Json细节处理

    前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java ...

  8. 三:C#对象转换Json时的一些高级(特殊)设置;

    导航目录: Newtonsoft.Json 概述 一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型:    二:C#对象.集合.DataTable与Json内容互转示例: ...

  9. Java基础97 json插件的使用(java对象和json字符串对象之间的转换)

    1.需要用到的包 2.实例 实体类 people package com.shore.entity; /** * @author DSHORE/2019-4-19 * */ public class ...

随机推荐

  1. Codeforces Round #490 (Div. 3) F - Cards and Joy

    F - Cards and Joy 思路:比较容易想到dp,直接dp感觉有点难,我们发现对于每一种数字要处理的情况都相同就是有 i 张牌 要给 j 个人分, 那么我们定义dp[ i ][ j ]表示 ...

  2. IP地址输入框

    <style> div.IPDiv{background:#ffffff;width:120;font-size:9pt;text-align:center;border:2 ridge ...

  3. BNUOJ 52506 Captcha Cracker

    简单模拟题. #include<bits/stdc++.h> using namespace std; ]; int T; int main() { scanf("%d" ...

  4. ref和out的用法和区别。

    关于ref和out的用法和区别在网上已经有很多的解释,这里只不过是写下对于我而说比较容易理解的解释. ref和out都可以用来在函数中返回数据,类似于c++中指针. 参数 Ref Out 是否一定需要 ...

  5. Linux下安装scapy-python3

    安装scapy # pip3 install scapy-python3 # yum install libffi-devel # pip3 install cryptography 新建scapy软 ...

  6. PlayMaker的特殊事件FINISHED

    PlayMaker的特殊事件FINISHED   在PlayMaker中,每个状态机都有一个特殊事件START.当启用状态机,触发START事件.其中,每个状态都可以有一个特殊事件FINISHED.当 ...

  7. 【BZOJ 4361】 4361: isn (DP+树状数组+容斥)

    4361: isn Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 218  Solved: 126 Description 给出一个长度为n的序列A( ...

  8. 【BZOJ 3443】 3443: 装备合成 (离线+线段树)

    3443: 装备合成 Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 63  Solved: 31 Description [背景]     lll69 ...

  9. 【51Nod 1815】【算法马拉松 23】调查任务

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1815 tarjan缩点后在DAG上递推即可. 每个点维护所有根到它的路径 ...

  10. 矩阵&行列式

    # 代数 排列 对换,对于一个排列操作,对于一个偶排列一次对换之后变为奇排列 反之变为偶排列 行列式 N阶行列式室友N^2个数aij(i,j = 1,2,3,...n) 行列式的数=\(\sum_ { ...