JSONObject 转换 JSON复杂对象
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复杂对象的更多相关文章
- JSONObject转换JSON之将Date转换为指定格式(转)
项目中,经常会用JSONObject插件将JavaBean或List<JavaBean>转换为JSON格式的字符串,而JavaBean的属性有时候会有java.util.Date这个类型的 ...
- JSON转换类(二)--List转换成Json、对象集合转换Json等
#region List转换成Json /// <summary> /// List转换成Json /// </summary> public static string Li ...
- List转换成Json、对象集合转换Json等
#region List转换成Json /// <summary> /// List转换成Json /// </summary> public static string Li ...
- C# 转换Json类
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.R ...
- Java对象转换成xml对象和Java对象转换成JSON对象
1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...
- json字符串转json对象,json对象转换成java对象
@RequestMapping(value = "updateInvestorApplyAccountNo", method = RequestMethod.POST) @Resp ...
- FastJson、Jackson、Gson进行Java对象转换Json细节处理
前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java ...
- 三:C#对象转换Json时的一些高级(特殊)设置;
导航目录: Newtonsoft.Json 概述 一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型: 二:C#对象.集合.DataTable与Json内容互转示例: ...
- Java基础97 json插件的使用(java对象和json字符串对象之间的转换)
1.需要用到的包 2.实例 实体类 people package com.shore.entity; /** * @author DSHORE/2019-4-19 * */ public class ...
随机推荐
- 实现优先级队列 --heapq模块
以给定的优先级对元素进行排序,每次pop删除优先级最高的 # coding=utf-8 # example.py # # Example of a priority queue import heap ...
- loadrunner生成随机uuid的方法
在globals.h中定义方法: 方法: 1.将生成GUID方法放在新建的GUID.h文件中: 2.把这个文件放入脚本保存处: 3.在globals.h中增加函数头“#include "GU ...
- vscode debugger for chrome 调试webpack的配置问题
module.exports = { entry: './app.ts', output: { filename: 'bundle.js', publicPath: '/assets', devtoo ...
- 网站优化:引用CDN公共库
什么是CDN公共库? CDN公共库是指将常用的JS库存放在CDN节点,以方便广大开发者直接调用.与将JS库存放在服务器单机上相比,CDN公共库更加稳定.高速.一般的CDN公共库都会包含全球所有最流行的 ...
- thinkphp5.0模块设计
5.0版本对模块的功能做了灵活设计,默认采用多模块的架构,并且支持单一模块设计,所有模块的命名空间均以app作为根命名空间(可配置更改). 目录结构 标准的应用和模块目录结构如下: ├─applica ...
- windbg调试相关命令
windbg 查找函数:x exe!main* 条件断点打印字符:bp 7199a2b0 ".printf \"message:%ma\", poi(@esp+8);.e ...
- 【Leetcode】583. Delete Operation for Two Strings
583. Delete Operation for Two Strings Given two words word1 and word2, find the minimum number of st ...
- Wireshark数据抓包教程之Wireshark捕获数据
Wireshark数据抓包教程之Wireshark捕获数据 Wireshark抓包方法 在使用Wireshark捕获以太网数据,可以捕获分析到自己的数据包,也可以去捕获同一局域网内,在知道对方IP地址 ...
- lambda 表达式+python内置函数
#函数 def f1(a,b): retrun a+b #lambda方式,形参(a,b):返回值(a+b) f2=lambda a,b : a+b 在一些比较简单的过程计算就可以用lambda p ...
- [BZOJ4260]Codechef REBXOR(Trie)
Trie模板题.求出每个前缀和后缀的最大异或和区间,枚举断点就可.不知为何跑得飞快. #include<cstdio> #include<cstring> #include&l ...