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相关推荐

  1. Atitit.android  jsbridge v1新特性

    Atitit.android  jsbridge v1新特性 1. Java代码调用js并传参其实是通过WebView的loadUrl方法去调用的.只是参数url的写法不一样而已1 2. 三.JAVA ...

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

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

  3. 盖国强:Oracle12c新特性设计与开发实现

    在第二天上午的专场四,来自云和恩墨创始人盖国强,同时他也是Oracle ACE总监.ITpub超级版主带来了<Oracle12c :新特性的设计与开发实现>主题演讲.在这个主题中,和大家分 ...

  4. Java基础20:Java8新特性终极指南

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  5. Java 8新特性终极指南

    在Java Code Geeks上已经有大量的关于Java 8 的教程了,像玩转Java 8--lambda与并发,Java 8 Date Time API 教程: LocalDateTime和在Ja ...

  6. 一文看透java8新特性

    1.介绍 毫无疑问,Java 8发行版是自Java 5(发行于2004,已经过了相当一段时间了)以来最具革命性的版本.Java 8 为Java语言.编译器.类库.开发工具与JVM(Java虚拟机)带来 ...

  7. 【转载保存】java8新特性学习

    编者注:Java 8已经公布有一段时间了,种种迹象表明Java 8是一个有重大改变的发行版. 在Java Code Geeks上已经有大量的关于Java 8 的教程了,像玩转Java 8--lambd ...

  8. 浅谈JDK8相对于JDK7的一些新特性

    上两天阿海升级了一下JDK环境,IDE版本更新成了Eclipse Neon. 不得不说,这个版本的Eclipse确实很不错,用起来页比较舒服多了.尤其是这个Eclipse的暗黑主题"Drac ...

  9. atitit.atiOrmStoreService 框架的原理与设计 part1  概述与新特性

    atitit.atiOrmStoreService 框架的原理与设计 part1  概述与新特性 1. 新特性如下 支持生成sql在无数据库连接的情况下 2. Orm设计 主要的俩个以来service ...

  10. atitit.jQuery Validate验证框架详解与ati Validate 设计新特性

    atitit.jQuery Validate验证框架详解与ati Validate 设计新特性 1. AtiValidate的目标1 2. 默的认校验规则1 2.1. 使用方式 1.metadata用 ...

最新文章

  1. office技巧——编号与文字之间的空白大小调整
  2. 六十二、Springboot中的配置文件和全注解
  3. .Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法
  4. .NET Core使用NPOI导出复杂Word详解
  5. Linux服务器的gou,开源跨平台移动项目Langou【简介】
  6. linux网络流量实时监控工具之iptraf 【个人比较喜欢用的流量监控软件】
  7. 吴恩达机器学习 7.神经网络参数的反向传播算法
  8. 蚂蚁金服做区块链:我们绝不发空气币,要做就服务民生!
  9. 服务器操作系统详解,深入解析Windows操作系统之总体架构
  10. 图像的稀疏表示(Sparse Representation)
  11. SECURITY:补丁
  12. 华为交换机导入配置_华为交换机配置导入和导出
  13. 兜兜转转~~,忘不了的break!! 忘不了的continue!!!!
  14. 开源软件生态:现状与趋势
  15. 从ChatGPT到ChatCAD:基于大型语言模型的医学图像交互式计算机辅助诊断
  16. Writing a Cause and Effect Essay
  17. 原生 JS 实现一个瀑布流插件
  18. CreateDC与CreateCompatibleDC建立的HDC有何不同?
  19. 如何修改Android应用程序的图标和名字
  20. URLDecoder.decode与URLEncoder.encode

热门文章

  1. iis mysql端口修改_如何处理IIS和Apache之间经常端口冲突
  2. Python开发环境配置 Vim + Ctags+ TagList
  3. PHP Sessions
  4. springmvc和encache集成
  5. c#基础学习@--1--
  6. JS 简易控制台插件 [供 博客, 论坛 运行js用]
  7. 控件Repeater的嵌套使用
  8. [JSOI2009]瓶子和燃料
  9. C# 入门(0807):流程控制
  10. 2017-2018-1 20155308 《信息安全系统设计基础》第十四周学习总结