下载地址:
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
https://blog.csdn.net/hykwhjc/article/details/81121224 fastJSON的使用
在渗透测试中遇到json数据一般都会测试下有没有反序列化,然而JSON库有Fastjson,JackJson,Gson等等,那么怎么判断后端不是Fastjson呢?可以构造特定的payload来进行探测分析
fastjson与protobuf,自己测试用代码
# Fastjson反序列化漏洞为例 1、此时/tmp目录 ![img]...
fastjon最新版本库1.2.47,分享资源,一起学习。
高版本的fastjson-1.2.71解决安全漏洞
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是一个Java语言编写的高性能,功能完善,完全支持的标准的JSON库,提供了许多将对象转化为JSON格式字符串的方法。该压缩包包含fastjson的jar包,以及一些相关的源码。
Fastjson1.2.47以及之前的所有版本
各个版本fastJson_jar包最新版,方便各位学习,交流互用
Alibaba发布的最新版本Fastjson1.2.67已经防御此漏洞;只需要下载fastjson-1.2.67.jar包更新即可。
FastJsonJar_你要的都在里面。。。。。。。。。。。。
fastjson1.2.24含源码
fastjson-1.2.4.jar 最新版本
fastjson 1.2.66 已发布,这又是一个维护版本,修复了一些 BUG,并且做安全加固,补充了 AutoType 黑名单。 Issues 修复某些场景下BeanToArray报错的问题 修复某些场景多版本共存导致的的兼容问题 修复...
Fastjson 1.2.80 及之前版本使用黑白名单用于防御反序列化漏洞,经研究该防御策略在特定条件下可绕过默认 autoType 关闭限制,攻击远程服务器,风险影响较大。建议 Fastjson 用户尽快采取安全措施保障系统安全
Fastjson 是一个 阿里巴巴提供的Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
fastJSON 版本 v2.1.18