Atitit.atijson 类库的新特性设计与实现 v3 q31

1. V1版本---集成了多引擎1

2. V2版本新特性 --bsh脚本化2

3. V3版本新特性---循环引用解决使用fastjson2

4. prob目前jsonlib库的存在的问题,2

4.1. 可能版本冲突,抛出ex2

4.2. 多个json类库编译需求jar ,需要同时具备多个json jar类库才可编译成功。。麻烦2

4.3. 循环引用的解决2

5. solu解决之道:2

5.1. 自定义json解析库,使用多个复合的json 解析复合的引擎2

5.2. 循环引用暂时使用fastjson解决,最终要限制level解决2

5.3. 脚本化,防止编译问题的 出现3

6. 几个要点3

6.1. 复合结构的转换3

6.2. 没有get set方法的属性自动忽略,而不抛出异常3

6.3. 时间格式的转换3

6.4. Api使用json lib的,以及gson的也一个3

6.5. 如果要将泛型转换成json, 3

7. 普通的的json解析器 Jackson类库 Google Gson JSON-lib类库4

8. Api4

8.1. toJson       xxx.fromObject(x).toString(2)4

8.2. 字符串转成对象   T fromJson(String str, Class<T> type)  fromObject(object)4

9. Teste code4

10. 参考6

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的更多相关文章

  1. Atitit  DbServiceV4qb9 数据库查询类库v4 新特性

    Atitit  DbServiceV4qb9 数据库查询类库v4 新特性     V4新特性 安全特性,屏蔽了executeUpdate,使用v2版 Sql异常转换,特别转换了DuplicateEnt ...

  2. 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. ...

  3. Atitit .c#的未来新特性计划草案

    Atitit .c#的未来新特性计划草案 1. C#的未来:追踪空引用1 1.1. 2. 变量命名空间1 1.2. 10. 项目引用Native dll2 1.3. 10. 项目引用Native dl ...

  4. atitit.ntfs ext 文件系统新特性对比

    atitit.ntfs ext 文件系统新特性对比 1. 现代文件系统应该有的特性2 1.1. 恢复Log2 1.2. 压缩2 1.3. Meta ext2 1.4. Fulltextཟsearch  ...

  5. Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39

    Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39 V8   重构iocutilV4,use def iocFact...jettyUtil V ...

  6. 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. ...

  7. Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39

    Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39 V1  初步实现sina csdn cnblogs V2  实现qzone sohu 的发帖 ...

  8. Atitit hibernate3 hinernate4 hibernate5新特性attilax总结

    Atitit hibernate3 hinernate4 hibernate5新特性attilax总结 1.1. Hibernate3的新特性 1 1.2. hibernate4.1版本中的新特性和h ...

  9. Atitit js es5 es6新特性 attilax总结

    Atitit js es5 es6新特性 attilax总结 1.1. JavaScript发展时间轴:1 1.2. 以下是ES6排名前十的最佳特性列表(排名不分先后):1 1.3. Es6 支持情况 ...

随机推荐

  1. Don't Be a Subsequence

    问题 F: Don't Be a Subsequence 时间限制: 1 Sec  内存限制: 128 MB提交: 33  解决: 2[提交] [状态] [讨论版] [命题人:] 题目描述 A sub ...

  2. [LOJ6433]最大前缀和

    深刻感受到自己的水平和机房里的其他人相差甚远,他们都是随手秒这个题的... $n$很小,考虑状压DP 当一个序列在某个位置取到最大前缀和后,意味着如果把后面的数抽出来单独成序列,那么它的每个前缀和都$ ...

  3. 【最近公共祖先】【块状树】CODEVS 1036 商务旅行

    在线块状树LCA模板. #include<cstdio> #include<vector> #include<algorithm> #include<cmat ...

  4. 【最短路】【Heap-Dijkstra】【分层图】bzoj2662 [BeiJing wc2012]冻结

    裸的分层图最短路. #include<cstdio> #include<cstring> #include<queue> #include<algorithm ...

  5. [CF607D]Power Tree

    题目大意: 一棵树初始只有一个编号为$1$的权值为$w_1$的根.$q(q\le2\times10^5)$次操作,每次可以给出$v,w(w<10^9)$,新建一个结点作为$v$的子结点,权值为$ ...

  6. c++基础类型之signed、unsigned的一个细节

    数值型 c++中,对于 int.long.int64....等这些数值类型,如果是有符合的,则类型前加不加 signed 其效果都是一样的. 比如如下声明: int nA; // 与 signed i ...

  7. HTML5 Boilerplate笔记(2)(转)

    最近看到了HTML5 Boilerplate模版,系统的学习与了解了一下.在各种CSS库.JS框架层出不穷的今天,能看到这么好的HTML模版,感觉甚爽.写篇博客,推荐给大家使用.   一:HTML5 ...

  8. 关于JS中原型链中的prototype与_proto_的个人理解与详细总结

    一直认为原型链太过复杂,尤其看过某图后被绕晕了一整子,今天清理硬盘空间(渣电脑),偶然又看到这图,勾起了点回忆,于是索性复习一下原型链相关的内容,表达能力欠缺逻辑混乱别见怪(为了防止新人__(此处指我 ...

  9. C++之共有继承、保护继承、私有继承

    1.封装,public,private作用就是这个目的. 类外只能访问public成员而不能方位private成员: private成员只能被类成员和友元访问: 2.继承,protected的作用就是 ...

  10. Dell服务器Raid卡电池策略调整

    DELL服务器的Riad卡都有可充电池的特性,这块可充电电池,在不使用时,也会有微弱的放电现象,当它的电量放电到低到一定程度时,Raid卡控制器就会对电池进行一次“放电”,将剩余的电量放掉,然后再进行 ...