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

  1. Atitit 项目的主体设计与结构文档 v5

    Atitit 项目的主体设计与结构文档 v5 1. 版本历史说明2 2. 功能大概说明2 3. 实现的目标3 3.1. cross device跨设备(pc 手机 平板)3 3.2. cross sc ...

  2. Atitit 图像处理类库安装与安装模式的前世今生与未来大趋势attilax总结.docx

    Atitit 图像处理类库安装与安装模式的前世今生与未来大趋势attilax总结.docx 1. 安装的原理,主要是解压,复制,设置三大步1 2. 目前我们常见的三大种安装模式,二进制模式与源码安装模 ...

  3. Atitit php序列化 php的serialize序列化和json序列化

    Atitit php序列化 php的serialize序列化和json序列化 PHP 对不同类型的数据用不同的字母进行标示,Yahoo 开发网站提供的Using Serialized PHP with ...

  4. 两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)

    本篇文章主要介绍了"两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)",主要涉及到两款JSON类库Jackson与JSON-lib的性能对比(新增第三款 ...

  5. 三款JSON类库Jackson,Gson与JSON-lib的性能对比

    近日做一些性能优化工作,在挑选JSON类库时,发现除了一般常用的JSON-lib外,还有一款号称性能最快的JSON处理器Jackson,于是用上了刚学会的JMeter,对这两个类库进行了简单的性能对比 ...

  6. 常见的JSON类库简单使用和遇到的问题

    1.常见的json类库 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.易于人阅读和编写,可以在多种语言之间进行数据交换. 选择一个合适的JSON库要从多个 ...

  7. Newtonsoft.Json类库学习

    目录 介绍... 1 Newtonsoft.Json下类... 1 Newtonsoft.Json.JsonConvert. 1 Newtonsoft.Json.JsonConvert.Seriali ...

  8. python json模块有什么用_Python中json模块与jsonpath模块的区别是什么

    Python中json模块与jsonpath模块的区别是什么 发布时间:2021-02-02 11:15:52 来源:亿速云 阅读:94 作者:小新 这篇文章主要介绍了Python中json模块与js ...

  9. WPF:使用Json.NET在TreeView中树形显示JSON数据

    原文 WPF:使用Json.NET在TreeView中树形显示JSON数据 据 读者可以参考这个开源的可以树形显示XML和JSON的工具: Mgen Object 603:XML/JSON树形显示小工 ...

最新文章

  1. 差错控制:海明码、循环冗余校验码
  2. [Android学习笔记]理解焦点处理原理的相关记录
  3. 牛客网_PAT乙级1004_福尔摩斯的约会 (20)
  4. 嵩天-Python语言程序设计程序题--第四周:程序的控制结构
  5. java 学习代码库_java 学习4
  6. H.264学习(一)——帧和场的概念
  7. Win32 API串口编程
  8. linux系统的安全机制有哪些内容,系统安全机制
  9. expires为session_面试必问:session,cookie和token的区别
  10. java语言程序设计基础篇14.6答案_《Java语言程序设计-基础篇》答案-第15章
  11. 【高等数学】一元函数积分表
  12. mysql备份与恢复 cat_MySQL备份和恢复具体实施
  13. 加速前进!华为已在全球多地注册“鸿蒙”商标
  14. Linux获取执行文件路径,如何 获取linux进程的执行文件路径
  15. 迭代器 iterator
  16. kaggle比赛语言java_Kaggle调查:2018年数据科学家最常用(和最推荐)的编程语言榜单...
  17. java类转换异常,java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
  18. LeetCode【709. 转换成小写字母】
  19. 软件设计师教程第5版.PDF.高清
  20. 使用百度开发者工具 4.0 搭建专属的小程序 IDE

热门文章

  1. 简单的实现登录拦截及统一异常处理(自定义异常)
  2. 适配器(Adaptor)模式
  3. 2017 Multi-University Training Contest - Team 2——HDU6045HDU6047HDU6055
  4. js学习总结----弹性势能动画之抛物线运动
  5. matlab中数组创建方法
  6. 无法解析此远程名称: 'www.***.com' 解决办法(转)
  7. ACM 中常用的算法有哪些? 2014-08-21 21:15 40人阅读 评论(0) 收藏...
  8. 重新想象 Windows 8 Store Apps (4) - 控件之提示控件: ProgressRing; 范围控件: ProgressBar, Slider...
  9. SHD0新建屏幕变式
  10. Hdu 1753 大明A+B 高精度小数相加