Atitit.atijson 类库的新特性设计与实现 v3 q31
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://blog.csdn.net/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://blog.csdn.net/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.android jsbridge v1新特性
Atitit.android jsbridge v1新特性 1. Java代码调用js并传参其实是通过WebView的loadUrl方法去调用的.只是参数url的写法不一样而已1 2. 三.JAVA ...
- Atitit. Atiposter 发帖机 新特性 poster new feature v7 q39
Atitit. Atiposter 发帖机 新特性 poster new feature v7 q39 V8 重构iocutilV4,use def iocFact...jettyUtil V ...
- 盖国强:Oracle12c新特性设计与开发实现
在第二天上午的专场四,来自云和恩墨创始人盖国强,同时他也是Oracle ACE总监.ITpub超级版主带来了<Oracle12c :新特性的设计与开发实现>主题演讲.在这个主题中,和大家分 ...
- Java基础20:Java8新特性终极指南
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- Java 8新特性终极指南
在Java Code Geeks上已经有大量的关于Java 8 的教程了,像玩转Java 8--lambda与并发,Java 8 Date Time API 教程: LocalDateTime和在Ja ...
- 一文看透java8新特性
1.介绍 毫无疑问,Java 8发行版是自Java 5(发行于2004,已经过了相当一段时间了)以来最具革命性的版本.Java 8 为Java语言.编译器.类库.开发工具与JVM(Java虚拟机)带来 ...
- 【转载保存】java8新特性学习
编者注:Java 8已经公布有一段时间了,种种迹象表明Java 8是一个有重大改变的发行版. 在Java Code Geeks上已经有大量的关于Java 8 的教程了,像玩转Java 8--lambd ...
- 浅谈JDK8相对于JDK7的一些新特性
上两天阿海升级了一下JDK环境,IDE版本更新成了Eclipse Neon. 不得不说,这个版本的Eclipse确实很不错,用起来页比较舒服多了.尤其是这个Eclipse的暗黑主题"Drac ...
- atitit.atiOrmStoreService 框架的原理与设计 part1 概述与新特性
atitit.atiOrmStoreService 框架的原理与设计 part1 概述与新特性 1. 新特性如下 支持生成sql在无数据库连接的情况下 2. Orm设计 主要的俩个以来service ...
- atitit.jQuery Validate验证框架详解与ati Validate 设计新特性
atitit.jQuery Validate验证框架详解与ati Validate 设计新特性 1. AtiValidate的目标1 2. 默的认校验规则1 2.1. 使用方式 1.metadata用 ...
最新文章
- office技巧——编号与文字之间的空白大小调整
- 六十二、Springboot中的配置文件和全注解
- .Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法
- .NET Core使用NPOI导出复杂Word详解
- Linux服务器的gou,开源跨平台移动项目Langou【简介】
- linux网络流量实时监控工具之iptraf 【个人比较喜欢用的流量监控软件】
- 吴恩达机器学习 7.神经网络参数的反向传播算法
- 蚂蚁金服做区块链:我们绝不发空气币,要做就服务民生!
- 服务器操作系统详解,深入解析Windows操作系统之总体架构
- 图像的稀疏表示(Sparse Representation)
- SECURITY:补丁
- 华为交换机导入配置_华为交换机配置导入和导出
- 兜兜转转~~,忘不了的break!! 忘不了的continue!!!!
- 开源软件生态:现状与趋势
- 从ChatGPT到ChatCAD:基于大型语言模型的医学图像交互式计算机辅助诊断
- Writing a Cause and Effect Essay
- 原生 JS 实现一个瀑布流插件
- CreateDC与CreateCompatibleDC建立的HDC有何不同?
- 如何修改Android应用程序的图标和名字
- URLDecoder.decode与URLEncoder.encode