Atitit.json类库的设计与实现 ati json lib
Atitit.json类库的设计与实现 ati json lib
1. 目前jsonlib库可能有问题,可能版本冲突,抛出ex1
2. 解决之道:1
2.1. 自定义json解析库,使用多个复合的json 解析复合的引擎1
3. 几个要点2
3.1. 复合结构的转换2
3.2. 没有get set方法的属性自动忽略,而不抛出异常2
3.3. 时间格式的转换2
3.4. Api使用json lib的,以及gson的也一个2
3.5. 如果要将泛型转换成json, 2
4. 普通的的json解析器 Jackson类库 Google Gson JSON-lib类库3
5. Api3
5.1. toJson xxx.fromObject(x).toString(2)3
5.2. 字符串转成对象 T fromJson(String str, Class<T> type) fromObject(object)3
6. Teste code3
1. 目前jsonlib库可能有问题,可能版本冲突,抛出ex
2. 解决之道:
2.1. 自定义json解析库,使用多个复合的json 解析复合的引擎
3. 几个要点
3.1. 复合结构的转换
3.2. 没有get set方法的属性自动忽略,而不抛出异常
3.3. 时间格式的转换
3.4. Api使用json lib的,以及gson的也一个
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
3.5. 如果要将泛型转换成json,
1、如,一个Map是这样的,Map<String, Map<String, List<String>>> map,如果这样使用gson.toJson(map)得不到正确的结果的话,那么,我们可能要这样使用,gson.toJson(map,new TypeToken<Map<String, Map<String, List<String>>>>(){}.getType())。
解决方案:
1、如果涉及到关联属性的对象,转换前可以先把它的关联属性转换并放入一个新建的Map或者List,然后按照层次结构重复这样的操作一层一层的往上转,这样,一般可以解决问题,但是,如果关联的层次比较深,做起来就很麻烦了。上面提到的问题3就可以用这种方式解决。
4. 普通的的json解析器 Jackson类库 Google Gson JSON-lib类库
5. Api
5.1. toJson xxx.fromObject(x).toString(2)
5.2. 字符串转成对象 T fromJson(String str, Class<T> type) fromObject(object)
6. Teste code
package com.attilax.json;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.attilax.core;
import com.google.gson.Gson;
public class JSONObject {
public JSONObject(Map m) {
this.obj = m;
}
public static void main(String[] args) {
Map m = new HashMap();
m.put("d", new Date());
// m.put(key, value)
JSONObject.fromObject(m).toString(2);
}
private String toString(int i) {
// if(i==2) //fmt
{
try {
return net.sf.json.JSONObject.fromObject(this.obj).toString(i);
} catch (Exception e) {
try {
// 创建一个gson对象
Gson gson = new Gson();
// 转换成json
String json = gson.toJson(this.obj);
return json;
} catch (Exception e2) {
return JsonUtil4jackjson.buildNormalBinder().toJson(
this.obj);
}
}
}
}
public Object obj;
private static JSONObject fromObject(Map m) {
// TODO Auto-generated method stub
return new JSONObject(m);
}
}
Atitit.json类库的设计与实现 ati json lib相关推荐
- Atitit 项目的主体设计与结构文档 v5
Atitit 项目的主体设计与结构文档 v5 1. 版本历史说明2 2. 功能大概说明2 3. 实现的目标3 3.1. cross device跨设备(pc 手机 平板)3 3.2. cross sc ...
- Atitit 图像处理类库安装与安装模式的前世今生与未来大趋势attilax总结.docx
Atitit 图像处理类库安装与安装模式的前世今生与未来大趋势attilax总结.docx 1. 安装的原理,主要是解压,复制,设置三大步1 2. 目前我们常见的三大种安装模式,二进制模式与源码安装模 ...
- Atitit php序列化 php的serialize序列化和json序列化
Atitit php序列化 php的serialize序列化和json序列化 PHP 对不同类型的数据用不同的字母进行标示,Yahoo 开发网站提供的Using Serialized PHP with ...
- 两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)
本篇文章主要介绍了"两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)",主要涉及到两款JSON类库Jackson与JSON-lib的性能对比(新增第三款 ...
- 三款JSON类库Jackson,Gson与JSON-lib的性能对比
近日做一些性能优化工作,在挑选JSON类库时,发现除了一般常用的JSON-lib外,还有一款号称性能最快的JSON处理器Jackson,于是用上了刚学会的JMeter,对这两个类库进行了简单的性能对比 ...
- 常见的JSON类库简单使用和遇到的问题
1.常见的json类库 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.易于人阅读和编写,可以在多种语言之间进行数据交换. 选择一个合适的JSON库要从多个 ...
- Newtonsoft.Json类库学习
目录 介绍... 1 Newtonsoft.Json下类... 1 Newtonsoft.Json.JsonConvert. 1 Newtonsoft.Json.JsonConvert.Seriali ...
- python json模块有什么用_Python中json模块与jsonpath模块的区别是什么
Python中json模块与jsonpath模块的区别是什么 发布时间:2021-02-02 11:15:52 来源:亿速云 阅读:94 作者:小新 这篇文章主要介绍了Python中json模块与js ...
- WPF:使用Json.NET在TreeView中树形显示JSON数据
原文 WPF:使用Json.NET在TreeView中树形显示JSON数据 据 读者可以参考这个开源的可以树形显示XML和JSON的工具: Mgen Object 603:XML/JSON树形显示小工 ...
最新文章
- 差错控制:海明码、循环冗余校验码
- [Android学习笔记]理解焦点处理原理的相关记录
- 牛客网_PAT乙级1004_福尔摩斯的约会 (20)
- 嵩天-Python语言程序设计程序题--第四周:程序的控制结构
- java 学习代码库_java 学习4
- H.264学习(一)——帧和场的概念
- Win32 API串口编程
- linux系统的安全机制有哪些内容,系统安全机制
- expires为session_面试必问:session,cookie和token的区别
- java语言程序设计基础篇14.6答案_《Java语言程序设计-基础篇》答案-第15章
- 【高等数学】一元函数积分表
- mysql备份与恢复 cat_MySQL备份和恢复具体实施
- 加速前进!华为已在全球多地注册“鸿蒙”商标
- Linux获取执行文件路径,如何
获取linux进程的执行文件路径
- 迭代器 iterator
- kaggle比赛语言java_Kaggle调查:2018年数据科学家最常用(和最推荐)的编程语言榜单...
- java类转换异常,java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
- LeetCode【709. 转换成小写字母】
- 软件设计师教程第5版.PDF.高清
- 使用百度开发者工具 4.0 搭建专属的小程序 IDE
热门文章
- 简单的实现登录拦截及统一异常处理(自定义异常)
- 适配器(Adaptor)模式
- 2017 Multi-University Training Contest - Team 2——HDU6045HDU6047HDU6055
- js学习总结----弹性势能动画之抛物线运动
- matlab中数组创建方法
- 无法解析此远程名称: 'www.***.com' 解决办法(转)
- ACM 中常用的算法有哪些? 2014-08-21 21:15 40人阅读 评论(0) 收藏...
- 重新想象 Windows 8 Store Apps (4) - 控件之提示控件: ProgressRing; 范围控件: ProgressBar, Slider...
- SHD0新建屏幕变式
- Hdu 1753 大明A+B 高精度小数相加