下载地址:
http://code.alibabatech.com/mvn/snapshots/com/alibaba/fastjson/1.1.3-SNAPSHOT/
这个版本修复了volking反映了List类型序列化时的bug。
http://code.alibabatech.com/jira/browse/FASTJSON-70
这个版本引入了一些很酷的特性:
1、支持循环引用
很多用户在初次使用fastjson时都遇到了循环引用的问题,这是反映最多的问题,我越来越认识到支持循环引用的必要性。经过测试,加入循环应用的支持对性能的影响很小,小于5%。我决定在1.1.3加入循环应用支持,而且是缺省打开这个特性。
public static class Department {
private int id;
private String name;
private Department parent;
private Department root;
private Collection<Department> children = new ArrayList<Department>();
public Department(){
}
public Department getRoot() {
return root;
}
public void setRoot(Department root) {
this.root = root;
}
public Department(int id, String name){
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Department getParent() {
return parent;
}
public void setParent(Department parent) {
this.parent = parent;
}
public Collection<Department> getChildren() {
return children;
}
public void setChildren(Collection<Department> children) {
this.children = children;
}
}
Department tech = new Department(1, "技术部");
tech.setRoot(tech);
{
Department pt = new Department(2, "平台技术部");
pt.setParent(tech);
pt.setRoot(tech);
tech.getChildren().add(pt);
{
Department sysbase = new Department(3, "系统基础");
sysbase.setParent(pt);
sysbase.setRoot(tech);
pt.getChildren().add(sysbase);
}
}
{
Department cn = new Department(4, "中文站技术部");
cn.setParent(tech);
cn.setRoot(tech);
tech.getChildren().add(cn);
}
{
//JSON.toJSONString(tech);
}
{
String prettyText = JSON.toJSONString(tech;
System.out.println(prettyText);
String text = JSON.toJSONString(tech);
Department dept = JSON.parseObject(text, Department.class);
Assert.assertTrue(dept == dept.getRoot());
}
输出的内容:
{
"children":[
{
"children":[{
"children":[],
"id":3,
"name":"系统基础",
"parent":{"$ref":".."},
"root":{"$ref":"$"}
}],
"id":2,
"name":"平台技术部",
"parent":{"$ref":".."},
"root":{"$ref":".."}
},
{
"children":[],
"id":4,
"name":"中文站技术部",
"parent":{"$ref":".."},
"root":{"$ref":".."}
}
],
"id":1,
"name":"技术部",
"root":{"$ref":"@"}
}
{
"children":[
{
"children":[{
"children":[],
"id":3,
"name":"系统基础",
"parent":{"$ref":".."}, // 上一级引用
"root":{"$ref":"$"} // 跟对象引用
}],
"id":2,
"name":"平台技术部",
"parent":{"$ref":".."}, // 上一级引用
"root":{"$ref":".."} // 上一级引用
},
{
"children":[],
"id":4,
"name":"中文站技术部",
"parent":{"$ref":".."}, // 上一级引用
"root":{"$ref":".."} // 上一级引用
}
],
"id":1,
"name":"技术部",
"root":{"$ref":"@"} // 引用自身
}
2、支持非缺省构造函数和静态工厂方法
基于编码习惯或者安全的原因,一些JavaBean没有缺省构造函数。fastjson 1.13开始支持这个特性。
例如:
public static class Entity {
private final int id;
private final String name;
@JSONCreator
public Entity(@JSONField(name = "id") int id, @JSONField(name = "name") String name){
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
public static class Entity {
private final int id;
private final String name;
// 静态工厂方法
@JSONCreator
public static Entity create(@JSONField(name = "id") int id, @JSONField(name = "name") String name) {
return new Entity(id, name);
}
private Entity(int id, String name){
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
3、原型
希望以接口的方式来操作json数据,这个特性是借鉴了jackson的功能。
import junit.framework.Assert;
import junit.framework.TestCase;
import com.alibaba.fastjson.JSON;
public class MaterializedInterfaceTest extends TestCase {
public static interface Bean {
int getId();
void setId(int value);
String getName();
void setName(String value);
}
public void test_parse() throws Exception {
String text = "{\"id\":123, \"name\":\"chris\"}";
Bean bean = JSON.parseObject(text, Bean.class);
// 按接口调用
Assert.assertEquals(123, bean.getId());
Assert.assertEquals("chris", bean.getName());
bean.setId(234);
Assert.assertEquals(234, bean.getId());
}
}
总结
1.1.3提供的三个新特性,进一步完善了fastjson的功能,这也是一个重要的版本。希望大家帮忙测试,一起打造最好的json processor!
分享到:
相关推荐
fastjson最新版本jar包 fastjson-1.2.14.jar
fastjson-1.1.35.jar ,fastjson-1.1.36.jar ,fastjson-1.1.37.jar ,fastjson-1.1.44.jar ,fastjson-1.2.3.jar,fastjson-1.2.4.jar
Fastjson曾因某些版本存在安全漏洞而被关注,因此在使用过程中应保持版本更新,及时修复可能的安全风险。此外,避免在不安全的环境中使用`parseObject()`方法,防止恶意输入导致代码执行。 总之,Fastjson作为一款...
fastjson的多个版本,fastjson 1.2.2版本、 fastjson 1.2.31版本、fastjson 1.2.47版本、fastjson 1.2.53版本、fastjson 1.2.54版本、fastjson 1.2.62版本、fastjson 1.2.73版本、fastjson 1.2.74版本
对于使用Fastjson 1.2.47及之前版本的开发者和管理员,最重要的是尽快升级到最新版本。Fastjson团队已经修复了这些已知的安全问题,因此更新到1.2.47之后的稳定版本是防止攻击的第一步。此外,可以开启Fastjson的...
在渗透测试中遇到json数据一般都会测试下有没有反序列化,然而JSON库有Fastjson,JackJson,Gson等等,那么怎么判断后端不是Fastjson呢?可以构造特定的payload来进行探测分析
标题中的“测试fastjson与protobuf”表明我们将探讨两个在IT领域广泛应用的数据序列化技术:Fastjson和Protocol Buffers(protobuf)。这两个技术都是用于处理JSON和二进制数据格式的工具,各自具有不同的特点和应用...
本文将深入探讨Fastjson2-2.0.39版本,解析其核心功能与使用技巧。 Fastjson是阿里巴巴的一个高性能的JSON库,它的主要功能包括JSON字符串与Java对象之间的转换,支持多种复杂的JSON操作。Fastjson2-2.0.39是该库的...
# Fastjson反序列化漏洞为例 1、此时/tmp目录 ![img]...
标题中的"fastjson1.2.2版本.jar"指的是FastJSON库的1.2.2版本的Java Archive(JAR)文件,这是一个包含了FastJSON库所有类和资源的打包文件,方便在Java项目中作为依赖使用。 FastJSON的核心功能在于它能够便捷地...
在标题提到的“高版本的fastjson-1.2.71解决安全漏洞”中,我们主要关注的是Fastjson如何通过更新到1.2.71版本来修复这些已知的安全问题。 Fastjson的安全漏洞通常涉及其自动类型识别机制。这个机制允许JSON字符串...
在1.2.47这个版本中,Fastjson 继续优化了性能,提升了稳定性,为开发者提供了更强大的JSON处理能力。 1. **基本概念** - JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时...
标题中的"fastJSON_v2.3.5"指的是一个特定版本的FastJSON库,这是一个流行的开源JSON序列化和反序列化库。FastJSON是用C#编写的,它提供了高效且易于使用的API来处理JSON数据。版本号"v2.3.5"表示这是该库的第2.3.5...
Fastjson是阿里巴巴开发的一款高性能的Java JSON库,它具有极快的性能,广泛的功能以及简洁易用的API,使其在Java社区中广受欢迎。Fastjson 1.2.24版本是其发展过程中的一个重要里程碑,该版本包含了完整的源码,...
《FastJsonJar:Java开发中的高效JSON处理库》 FastJsonJar,正如其名,是一个专为Java开发者设计的高效JSON解析和生成工具。在现代Web服务和移动应用开发中,JSON作为数据交换格式,其使用频率之高不言而喻。...
Fastjson是阿里巴巴开发的一款高性能的Java语言JSON库,它的全称是Fast Java Object to JSON and JSON to Java Object,...在集成测试和生产环境中,建议使用稳定版,并关注官方发布的更新公告,以便及时进行版本升级。
在这个讨论中,我们将深入探讨Fastjson的核心特性、用法以及1.2.4版本的更新亮点。 1. **核心特性** - **快速解析和生成**:Fastjson拥有极快的解析和生成速度,通过优化的算法设计,能够处理大量JSON数据。 - *...
在标题中提到的 "fastjson-1.2.9.jar.zip" 是 Fastjson 的一个特定版本,包含的 "fastjson-1.2.9.jar" 文件是该库的可执行 JAR 包,开发者可以直接引入到项目中使用。 **JSON 解析与序列化** 1. **解析 JSON**: ...
《Fastjson:高效便捷的Java JSON库》 Fastjson,由阿里巴巴开发并开源的一个Java库,扮演着数据交换的重要角色,特别是在Java对象与JSON格式之间的转换。它的出现,极大地简化了JSON在Java应用中的处理流程,提升...
Fastjson 1.2.80 及之前版本使用黑白名单用于防御反序列化漏洞,经研究该防御策略在特定条件下可绕过默认 autoType 关闭限制,攻击远程服务器,风险影响较大。建议 Fastjson 用户尽快采取安全措施保障系统安全