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 ...
随机推荐
- 安装 jupyter notebook 出现 ModuleNotFoundError: No module named 'markupsafe._compat' 错误
使用 python -m pip install jupyter 安装完成 jupyter notebook 之后,在命令行界面输入 "jupyter notebook "指令打开 ...
- HTML5 Video/Audio播放本地文件
这段时间经常看到开发者在反复询问同一个问题,为什么通过设置src属性,不能播放本地的媒体文件?例如video.src=”D:\test.mp4”. 这是因为浏览器中的JavaScript不能直接直接访 ...
- 01-学前入门概念:.net与c#
.Net是由(.Net 平台和.Net FrameWork框架)这两部分组成. .Net FrameWork是由(CLR公共语言运行时和.Net 类库组成). .Net FrameWork框架是.Ne ...
- Inno Setup Winfrom 打包工具
1.下载并安装Inno Setup 编译器 2.安装完成后打开Inno Setup 编译器: 3.选择[用「脚本向导」创建新的脚本文件(S)]: 4.点击[下一步]: 5.填写制作后程序的基本信息: ...
- PHP 笔记——操作MySQL数据库
1. 连接MySQL服务器 mysqli_connect :此函数是该函数的别名: mysqli::__construct() mysqli mysqli_connect ( [string se ...
- 「COCI2016/2017 Contest #2」Bruza
「COCI2016/2017 Contest #2」Bruza 解题思路 : 首先对于任意时刻 \(i\) ,硬币一定移动到了深度为 \(i\) 的节点,所以第 \(i\) 时刻 Danel 一定染掉 ...
- [BZOJ4552][TJOI2016&&HEOI2016]排序(二分答案+线段树/线段树分裂与合并)
解法一:二分答案+线段树 首先我们知道,对于一个01序列排序,用线段树维护的话可以做到单次排序复杂度仅为log级别. 这道题只有一个询问,所以离线没有意义,而一个询问让我们很自然的想到二分答案.先二分 ...
- 斐波那契数列(Java实现)
描述 一个斐波那契序列,F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n>=2),根据n的值,计算斐波那契数F(n),其中0≤n≤1000. 输入 输入 ...
- Apache之.htaccess备忘录(一)
.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置,也是使用apache的同学最常碰到的文件,下面罗列一些常用的知识,以备不时之需. 1 . 如何让Apache支持 ...
- BZOJ 2818: Gcd 筛法
2818: Gcd 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2818 Description 给定整数N,求1<=x,y< ...