jsonjson处理经典

上传人:san****019 文档编号:70556308 上传时间:2019-01-17 格式:PPT 页数:27 大小:604.01KB
返回 下载 相关 举报
jsonjson处理经典_第1页
第1页 / 共27页
jsonjson处理经典_第2页
第2页 / 共27页
jsonjson处理经典_第3页
第3页 / 共27页
jsonjson处理经典_第4页
第4页 / 共27页
jsonjson处理经典_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《jsonjson处理经典》由会员分享,可在线阅读,更多相关《jsonjson处理经典(27页珍藏版)》请在金锄头文库上搜索。

1、JSON及JSON处理,什么是JSON,JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C+, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。 更多信息的可以查看json的官

2、方网站http:/json.org。,JSON建构于两种结构-1,“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。 在Java语言中,我们可以将它理解成HashMap. 对象是一个无序的“名称/值对”集合。一个对象以“”(左括号)开始,“”(右括号)结束。每个“名称”后跟一个“:”(冒号);“名称/值 对”之间使用“

3、,”(逗号)分隔。 示例:var json = “name”:”Jack”,”age”:90,”Marray”:true;,JSON建构于两种结构-2,值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array或List)。 数组是值(value)的有序集合。一个数组以“”(左中括号)开始,“”(右中括号)结束。值之间使用“,”(逗号)分隔。 示例:var json = “Jack”,”Rose”,”Tom”,89,true,false;,JSON的解析:,JSON的解析分成两种情况: 将Object/Array解析成JSON字符串,这种情况

4、一般用于响应用户的输出。 将Json串解析成Object或是Array,这种情况一般用于服务器接收到了用户请求的JSON串。 目前比较流行的解析工具为: json-lib。 fastjson.,使用json-lib解析:,准备jar包: (可以从struts2的包中找到他们,因为struts2用它) commons-beanutils.jar commons-collections-3.1.jar commons-lang-2.3.jar commons-logging.jar ezmorph-1.0.4.jar json-lib-2.3-jdk15.jar这是json-lib的核心包,上面都

5、是它的依赖包,Json-lib:,将Array解析成json串。使用JSONArray可以解析Array类型:,Json-lib:,将JavaBean/Map解析成JSON串:使用JSONObject:,Json-lib:,使用JsonConfig过虑属性:适用于JavaBean/Map,输出结果为:“id”:“A001”,注意,没有name属性。,Json-lib:,将json串转换成Array:,以下是输出结果:,Json-lib:,将json串转成JavaBean/Map:,Fastjson介绍:,Fastjson是一个Java语言编写的JSON处理器。 1、遵循http:/json.o

6、rg标准,为其官方网站收录的参考实现之一。 2、功能强大,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。 3、无依赖,不需要例外额外的jar,能够直接跑在JDK上。 4、开源,使用Apache License 2.0协议开源。 、支持使用注解对字段的过虑。 Fastjson的最主要的使用入口是com.alibaba.fastjson.JSON,JSON类的功能:,public static final Object parse(String text); / 把JSON文本parse为JSONObject或者JSONArray pub

7、lic static final JSONObject parseObject(String text); / 把JSON文本parse成JSONObject public static final T parseObject(String text, Class clazz); / 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); / 把JSON文本parse成JSONArray public static final List parseArray(String text, Class

8、clazz); /把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); / 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); / 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArr

9、ay。,FastJson示例:将Java对象转成JSON串:,FastJson:使用注解过虑去除某些字段:,FastJson-将字符串转成对象:,更多功能详情 以下示例仅供参考.,其他示例:对某些字段时间名称转换:,使用PropertyFilter过虑不需要的字段:,ValueFilter值过虑,使用JSONField定制序列化,原型接口,原型接口支持。这个功能借鉴自jackson,比较好玩,也许能够节省代码,循环引用,很多用户在初次使用fastjson时都遇到了循环引用的问题,这是反映最多的问题,我越来越认识到支持循环引用的必要性。经过测试,加入循环应用的支持对性能的影响很小,小于5。我决定

10、在1.1.3加入循环应用支持,而且是缺省打开这个特性。 fastjson支持的循环应用是自然的,不需要象jackson那样,需要Annotation设置。fastjson支持的引用,是基于path的,方便javascript解析。 Fastjson目前已经为我们解决好了循环引用的问题。,循环引用的解决办法,在1.1.3版本之前,fastjson不支持循环引用。有些对象存在循环引用,例如: parent和children之间存在循环应用了,执行JSON序列化时会报错:“com.alibaba.fastjson.JSONException: maybe circular references” 。

11、 解决办法一 在parent字段上添加修饰符transient 解决办法二 使用Annotation JSONField标注不需要序列化getParent属性,按字段名称排序后输出,很多场合需要按字段名称排序之后输出,为了满足这一需求,fastjson 提供了一个新特性SortField。 使用方式如下: JSON.toJSONString(object, SerializerFeature.SortField),自定义序列化,自省支持,在标准中,将对象序列化为JSON文本之后,就丢失了类型信息。虽然fastjson能够支持parse时传入Class来实现类型的识别,但是这个有局限性,在fastjson 1.1.3之后,完善支持一个特性,就是自省。,输出的信息如下:注意type信息,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号