Atitit.atijson 类库的新特性设计与实现 v3 q31
Atitit.atijson 类库的新特性设计与实现 v3 q31
3. V3版本新特性---循环引用解决使用fastjson2
4.2. 多个json类库编译需求jar ,需要同时具备多个json jar类库才可编译成功。。麻烦2
5.1. 自定义json解析库,使用多个复合的json 解析复合的引擎2
5.2. 循环引用暂时使用fastjson解决,最终要限制level解决2
6.2. 没有get set方法的属性自动忽略,而不抛出异常3
6.4. Api使用json lib的,以及gson的也一个3
7. 普通的的json解析器 Jackson类库 Google Gson JSON-lib类库4
8.1. toJson xxx.fromObject(x).toString(2)4
8.2. 字符串转成对象 T fromJson(String str, Class<T> type) fromObject(object)4
1. V1版本---集成了多引擎
2. V2版本新特性 --bsh脚本化
使用了bsh脚本化防止编译错误
3. V3版本新特性---循环引用解决使用fastjson
Fastjson版本放在第一解析器序列
4. prob目前jsonlib库的存在的问题,
4.1. 可能版本冲突,抛出ex
4.2. 多个json类库编译需求jar ,需要同时具备多个json jar类库才可编译成功。。麻烦
4.3. 循环引用的解决
作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/attilax/
5. solu解决之道:
5.1. 自定义json解析库,使用多个复合的json 解析复合的引擎
5.2. 循环引用暂时使用fastjson解决,最终要限制level解决
通过反射,变成map,限制层数解决
5.3. 脚本化,防止编译问题的 出现
6. 几个要点
6.1. 复合结构的转换
6.2. 没有get set方法的属性自动忽略,而不抛出异常
6.3. 时间格式的转换
6.4. Api使用json lib的,以及gson的也一个
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/attilax/
6.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就可以用这种方式解决。
7. 普通的的json解析器 Jackson类库 Google Gson JSON-lib类库
8. Api
8.1. toJson xxx.fromObject(x).toString(2)
8.2. 字符串转成对象 T fromJson(String str, Class<T> type) fromObject(object)
9. 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);
}
}
10. 参考
Atitit.序列化循环引用解决方案json
Atitit.atijson 类库的新特性设计与实现 v3 q31的更多相关文章
- Atitit DbServiceV4qb9 数据库查询类库v4 新特性
Atitit DbServiceV4qb9 数据库查询类库v4 新特性 V4新特性 安全特性,屏蔽了executeUpdate,使用v2版 Sql异常转换,特别转换了DuplicateEnt ...
- Atitit mac os 版本 新特性 attilax大总结
Atitit mac os 版本 新特性 attilax大总结 1. Macos概述1 2. 早期2 2.1. Macintosh OS (系统 1.0) 1984年2 2.2. Mac OS 7. ...
- Atitit .c#的未来新特性计划草案
Atitit .c#的未来新特性计划草案 1. C#的未来:追踪空引用1 1.1. 2. 变量命名空间1 1.2. 10. 项目引用Native dll2 1.3. 10. 项目引用Native dl ...
- atitit.ntfs ext 文件系统新特性对比
atitit.ntfs ext 文件系统新特性对比 1. 现代文件系统应该有的特性2 1.1. 恢复Log2 1.2. 压缩2 1.3. Meta ext2 1.4. Fulltextཟsearch ...
- Atitit. Atiposter 发帖机 新特性 poster new feature v7 q39
Atitit. Atiposter 发帖机 新特性 poster new feature v7 q39 V8 重构iocutilV4,use def iocFact...jettyUtil V ...
- Atitit. Atiposter 发帖机 新特性 poster new feature v11 .docx
Atitit. Atiposter 发帖机 新特性 poster new feature v11 .docx 1.1. 版本历史1 2. 1. 未来版本规划2 2.1. V12版本规划2 2.2. ...
- Atitit. Atiposter 发帖机 新特性 poster new feature v7 q39
Atitit. Atiposter 发帖机 新特性 poster new feature v7 q39 V1 初步实现sina csdn cnblogs V2 实现qzone sohu 的发帖 ...
- Atitit hibernate3 hinernate4 hibernate5新特性attilax总结
Atitit hibernate3 hinernate4 hibernate5新特性attilax总结 1.1. Hibernate3的新特性 1 1.2. hibernate4.1版本中的新特性和h ...
- Atitit js es5 es6新特性 attilax总结
Atitit js es5 es6新特性 attilax总结 1.1. JavaScript发展时间轴:1 1.2. 以下是ES6排名前十的最佳特性列表(排名不分先后):1 1.3. Es6 支持情况 ...
随机推荐
- Don't Be a Subsequence
问题 F: Don't Be a Subsequence 时间限制: 1 Sec 内存限制: 128 MB提交: 33 解决: 2[提交] [状态] [讨论版] [命题人:] 题目描述 A sub ...
- [LOJ6433]最大前缀和
深刻感受到自己的水平和机房里的其他人相差甚远,他们都是随手秒这个题的... $n$很小,考虑状压DP 当一个序列在某个位置取到最大前缀和后,意味着如果把后面的数抽出来单独成序列,那么它的每个前缀和都$ ...
- 【最近公共祖先】【块状树】CODEVS 1036 商务旅行
在线块状树LCA模板. #include<cstdio> #include<vector> #include<algorithm> #include<cmat ...
- 【最短路】【Heap-Dijkstra】【分层图】bzoj2662 [BeiJing wc2012]冻结
裸的分层图最短路. #include<cstdio> #include<cstring> #include<queue> #include<algorithm ...
- [CF607D]Power Tree
题目大意: 一棵树初始只有一个编号为$1$的权值为$w_1$的根.$q(q\le2\times10^5)$次操作,每次可以给出$v,w(w<10^9)$,新建一个结点作为$v$的子结点,权值为$ ...
- c++基础类型之signed、unsigned的一个细节
数值型 c++中,对于 int.long.int64....等这些数值类型,如果是有符合的,则类型前加不加 signed 其效果都是一样的. 比如如下声明: int nA; // 与 signed i ...
- HTML5 Boilerplate笔记(2)(转)
最近看到了HTML5 Boilerplate模版,系统的学习与了解了一下.在各种CSS库.JS框架层出不穷的今天,能看到这么好的HTML模版,感觉甚爽.写篇博客,推荐给大家使用. 一:HTML5 ...
- 关于JS中原型链中的prototype与_proto_的个人理解与详细总结
一直认为原型链太过复杂,尤其看过某图后被绕晕了一整子,今天清理硬盘空间(渣电脑),偶然又看到这图,勾起了点回忆,于是索性复习一下原型链相关的内容,表达能力欠缺逻辑混乱别见怪(为了防止新人__(此处指我 ...
- C++之共有继承、保护继承、私有继承
1.封装,public,private作用就是这个目的. 类外只能访问public成员而不能方位private成员: private成员只能被类成员和友元访问: 2.继承,protected的作用就是 ...
- Dell服务器Raid卡电池策略调整
DELL服务器的Riad卡都有可充电池的特性,这块可充电电池,在不使用时,也会有微弱的放电现象,当它的电量放电到低到一定程度时,Raid卡控制器就会对电池进行一次“放电”,将剩余的电量放掉,然后再进行 ...