JSON标准是不支持自省的,也就是说如下的JSON文本,你不知道它是什么类型:
{"id":12,"name":"魏嘉留"}
fastjson支持传入类型信息,例如:
String text = ...; // {"id":12,"name":"魏嘉留"}
JSON.parseObject(text, Employee.class);
如果序列化时,使用WriteClassName的特性,JSON文本是这样:
Employee x = ...;
String text = JSON.toJSONString(x, SerializerFeature.WriteClassName);
上面例子中的JSON文本是:
{“@type”:"com.alibaba.demo.Employee", "id":12,"name":"魏嘉留"}
带有@type属性的文本将会被自动识别类型,上面的文本可以这样处理:
Employee x = (Employee) JSON.parse(text);
这就是Fastjson支持的自省功能。
但是使用WriteClassName之后,json文本的大小增加了许多,这个怎么办呢?fastjson 1.1.6版本将会做优化处理,非必要,不输出类型信息。
class A {
B getB();
setB(B b);
}
类A拥有属性B,A和B都是对象,但是反序列化的时候,能够根据Property的类型信息得到B的类型,这时只需要输出A的类型,不需要输出B的类型信息。
例如:
{"@type":"com.alibaba.json.demo.A","b":{"id":0}}
在1.1.5之前的版本则会如下:
{"@type":"com.alibaba.json.demo.A","b":{"@type":"com.alibaba.json.demo.B","id":0}}
通过这种办法可以用List<T>类型的属性,由此能够减少冗余不必要的类型信息。
如下是一些测试用例:
http://code.alibabatech.com/svn/fastjson/trunk/fastjson/src/test/java/com/alibaba/json/test/bvt/writeClassName/WriteClassNameTest2.java
http://code.alibabatech.com/svn/fastjson/trunk/fastjson/src/test/java/com/alibaba/json/test/bvt/writeClassName/WriteClassNameTest_List2.java
分享到:
相关推荐
在标题中提到的"使用fastjson实现对象和json串之间的相互转换的jar包",就是指通过引入Fastjson的jar依赖,开发者可以在项目中直接调用其API来实现这两个功能。 首先,让我们看看如何将Java对象转换为JSON字符串。...
通过fastjson实现了JavaBean,list,MAP,list等格式与json格式之间的转换,已经附带fastjson的包,包的版本为fastjson-1.1.36.jar
本文将详细介绍如何在Spring MVC项目中整合FastJson,实现RESTful风格的API。 首先,我们需要在项目中引入Spring MVC和FastJson的相关依赖。在Maven的pom.xml文件中添加以下依赖: ```xml <groupId>org.spring...
通过JSON的简洁数据格式和FastJSON的高性能处理,开发者可以轻松地在两端之间传递复杂的数据,实现应用程序的功能扩展和数据交互。在实际工程中,这种集成方法具有广泛的应用前景,尤其是在需要跨平台数据交换的场景...
总结,这个实例通过Map和Fastjson在Java Web应用中实现了前后台数据的高效交换,同时结合jQuery的Ajax功能,使得用户界面与服务器端的数据交互更为流畅。理解并掌握这些技术对于提升Java Web开发能力至关重要。
在标题中提到的"fastjson.jar"是Fastjson库的主要运行时文件,它包含了所有必要的类和资源,使得开发者能够直接在项目中引用并使用Fastjson的功能。 描述中指出,Fastjson支持大量的JSON数据转换,这意味着它可以...
通过查看源代码,开发者可以深入理解 Fastjson 的内部实现机制,包括其解析策略、性能优化措施,以及如何处理 JSON 格式的各种特例。这对于调试、学习和定制 Fastjson 功能非常有帮助。 **Fastjson 的核心特性** - ...
在开发Web应用时,Spring MVC框架常用于构建后端服务,而FastJson是阿里巴巴提供的一款高效、功能强大的JSON处理库。本教程将详细介绍如何在Spring MVC项目中整合FastJson,以便实现RESTful风格的API。 首先,理解...
4. **性能优化**: 阿里巴巴对 Fastjson 进行了深度优化,使其在处理速度上表现出色,尤其在大数据量的 JSON 解析和序列化时。 5. **安全增强**: 针对 JSON 注入等安全问题,Fastjson 提供了安全模式,可以防止恶意...
而Fastjson,由阿里巴巴公司开发,是一款性能优秀且易用的Java语言编写的JSON库,它能够实现Java对象与JSON数据之间的快速转换。本文将围绕Fastjson的核心特性、使用方法以及优化策略展开详细讲解。 一、Fastjson...
Fastjson是阿里巴巴开发的一款高效、功能强大的JSON库,广泛应用于Java编程环境中。它以其简洁的API、卓越的性能和丰富的功能,成为了许多开发者处理JSON数据的首选工具。在Fastjson-1.2.9版本中,我们主要关注三个...
4. 支持自定义类型转换:Fastjson允许开发者自定义类型转换规则,通过实现`JSONSerializer`和`JSONParser`接口,可以对特定类型的字段进行特殊处理。 5. JSONPath支持:Fastjson提供了对JSONPath的支持,这使得在...
Fastjson 1.2.66是该库的一个稳定版本,其核心功能包括JSON字符串与Java对象之间的转换,以及JSON数据的解析与生成。本文将深入探讨Fastjson 1.2.66版本中的关键特性和使用技巧。 1. **JSON字符串与Java对象的转换*...
1. **快速的解析与生成**:Fastjson采用了优化的算法,使得在处理大规模JSON数据时仍能保持高速度。 2. **强大的映射机制**:它可以自动将JSON数据映射为Java对象,反之亦然,无需额外的注解或配置。 3. **类型安全*...
《深入解析Fastjson:从1.2.4到1.2.5的演进与优化》 Fastjson,由阿里巴巴开发并开源的一款高效、功能强大的Java JSON库,它以其轻量级、快速以及对Java对象和JSON数据之间的无缝转换而闻名。在本文中,我们将深入...
- 文件列表中的`fastjson-1.2.2.jar`是Fastjson的1.2.2版本,该版本可能包含了bug修复、性能优化和新功能。 - `fastjson-1.2.2-sources.jar`包含了源代码,方便开发者查看和学习内部实现。 - `fastjson-1.2.2.zip...
Fastjson的核心功能是将Java对象转换为JSON字符串,以及将JSON字符串反序列化为Java对象。它提供了一种简单直观的API,使得JSON操作变得轻而易举。例如,`JSON.toJSONString(obj)`用于将Java对象转换成JSON字符串,...
fastjson的主要功能有: 1. 速度快:fastjson采用内置的字符解析算法,超过同类其他解析库速度。 2. 支持普通JSON和JavaScript JSON标准:fastjson支持所有JSON标准语法,同时支持JavaScript混入的语法,如 NaN、Infinity...
在“jxxt-fastjson”这个压缩包中,可能包含了实现这个功能的源代码、配置文件示例、以及相关的测试用例。通过分析这些内容,我们可以深入理解如何在实际项目中实施这个定制的Fastjson别名配置化方案。同时,了解这...