Atitit.json类库的设计与实现 ati json lib
Atitit.json类库的设计与实现 ati json lib
1. 目前jsonlib库可能有问题,可能版本冲突,抛出ex1
2.1. 自定义json解析库,使用多个复合的json 解析复合的引擎1
3.2. 没有get set方法的属性自动忽略,而不抛出异常2
3.4. Api使用json lib的,以及gson的也一个2
4. 普通的的json解析器 Jackson类库 Google Gson JSON-lib类库3
5.1. toJson xxx.fromObject(x).toString(2)3
5.2. 字符串转成对象 T fromJson(String str, Class<T> type) fromObject(object)3
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://www.cnblogs.com/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的更多相关文章
- atitit.XML类库选型及object 对象bean 跟json转换方案
atitit.XML类库选型及object 对象bean 跟json转换方案 1. XML类库可以分成2大类.标准的.这些类库通常接口和实现都是分开的 1 2. 常见的xml方面的方法 2 2.1. ...
- Atitit.atijson 类库的新特性设计与实现 v3 q31
Atitit.atijson 类库的新特性设计与实现 v3 q31 1. V1版本---集成了多引擎1 2. V2版本新特性 --bsh脚本化2 3. V3版本新特性---循环引用解决使用fastjs ...
- atitit.基于http json api 接口设计 最佳实践 总结o7
atitit.基于http json api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...
- Atitit 通用接口的设计与实现attilax 总结
Atitit 通用接口的设计与实现attilax 总结 1.1. 现存的情况1 1.2. 接口返回类型,与返回序列化格式1 1.3. 异常传递 代替返回值模式1 1.4. 通用接口原理1 1.5. A ...
- Atitit 项目的主体设计与结构文档 v5
Atitit 项目的主体设计与结构文档 v5 1. 版本历史说明2 2. 功能大概说明2 3. 实现的目标3 3.1. cross device跨设备(pc 手机 平板)3 3.2. cross sc ...
- Atitit 图像处理类库大总结attilax qc20
Atitit 图像处理类库大总结attilax qc20 1.1. 选择与组合不同的图像处理类库1 1.2. Halcon 貌似商业工具,功能强大.1 1.3. Openvc Openvc功能也是比 ...
- Atitit. null错误的设计 使用Optional来处理null
Atitit. null错误的设计 使用Optional来处理null 然后,我们再看看null还会引入什么问题. 看看下面这个代码: String address = person.getCount ...
- Atitit 项目的主体设计与结构文档 v3
Atitit 项目的主体设计与结构文档 v3 1. 实现的目标2 1.1. cross device跨设备(pc 手机 平板)作为规划2 1.2. 企业级Java体系与开发语言2 1.3. 高扩展性, ...
- 基于WinCE的JSON 类库 源码
基于WinCE的JSON 类库,可以将对象序列化成字符串和文件. 提示,其在反序列化时有一个BUG: 如果对象的某个字段值为 null,将其序列化成字符串,然后将该字符串反序列化成对象时会报异常. 这 ...
随机推荐
- 【递推】【卡特兰数】CODEVS 3134 Circle
新GET了一种卡特兰数的应用…… 在一个圆上,有2*K个不同的结点,我们以这些点为端点,连K条线段,使得每个结点都恰好用一次.在满足这些线段将圆分成最少部分的前提下,请计算有多少种连线的方法. 不会证 ...
- openresty的时间获取
ngx.say('ngx.time()' .. ngx.time()) ngx.say('ngx.now()' .. ngx.now()) ngx.say('ngx.today()' .. ngx.t ...
- 7.2(java学习笔记)URL
一.URL URL类表示统一资源定位符,指向万维网上“资源”的指针. 资源可以是简单的文件或目录,也可以是对更复杂对象的引用,比如对数据库或搜索引擎的查询. URL即是定位也是资源,定位到网络中一个具 ...
- Android 架构 3.实现
以实现最小化可用产品(MVP)的目标,用最简单的方式来搭建架构和实现代码.IDE采用Android Studio,Demo实现的功能为用户注册.登录和展示一个券列表,数据采用我们现有项目的测试数据,接 ...
- wpf datagrid performance
http://stackoverflow.com/questions/1704512/wpf-toolkit-datagrid-scrolling-performance-problems-why h ...
- 调试Ajax调用的利器firebug
这几天我在家里调试PCS的Ajax调用时候发现一个问题就是调试手段太少,一般我会在进入ajax调用前加上一段alert输出变量信息. 比如 alert($("#taskid").v ...
- 虚拟机设置NAT上网
需要开启虚拟机网络相关服务, 安装虚拟网卡VMware虚拟机下实现NAT方式上网1. 把你的虚拟网卡VMnet8设置为自动获得IP.自动获得DNS服务器,启用.2. 把你虚拟机中操作系统的“本地连接” ...
- idea tomcat 怎样出现update classes and resources
idea Tomcat 出现update classes and resources 出现热加载 正确配置应该是这个 在 Deployment (调度,部署) 中点击 + 选择war explored ...
- 解决Odoo访问fonts.googleapis.com导致速度慢的问题
Odoo中有些css文件引用了谷歌字体,但因为谷歌服务器被墙,导致部分页面加载受影响. 解决方法如下: 360网站卫士常用前端公共库CDN服务把谷歌字体库都存到它的CDN上了,因此我们只需把样式表中谷 ...
- 访问vector元素方法的效率比较(转)
LInux下: gcc 4.47,red hat6 #include<iostream> #include<vector> #include<time.h> usi ...