Releases: alibaba/fastjson2
Release list
fastjson 2.0.64版本发布
FASTJSON 2.0.64 Release Notes
Release Date: 2 Aug 2026
Tag: 2.0.64
Overview
This is a bug fix release. It fixes several issues in core serialization/deserialization, Java records support, and the fastjson 1.x compatibility layer. All users are recommended to upgrade.
Bug Fixes
- Fixed
ClassFormatErrorwhen serializing classes with array-typed fields #4009 #4014 - Fixed
strBufnot kept in sync after mid-loop growth, which could produce corrupted output #7671 #7676 - Fixed generic invalidation in record class #3156 #4027
- Fixed global naming strategy not applied to Java records #7656 #7657
- Fixed
MethodHandles.Lookupinitialization order — initialize before readingIMPL_LOOKUP#7691 #7718 - Fixed
additionalItemsschema validation for Java arrays #7709 - (compat) Added
serialVersionUIDtoJSONArrayfor Java serialization compatibility #7687 #7698 - (compat) Fixed JSONPath consecutive writes failing in fastjson 1.x compatibility layer #7697
- (compat) Added
ParserConfig.propertyNamingStrategyfor fastjson 1.x compatibility #7740
Maven Dependency Configuration
Standard Version
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.64</version>
</dependency>Android 5 Optimized Version
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.64.android5</version>
</dependency>Android 8 Optimized Version
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.64.android8</version>
</dependency>中文版本
概述
本版本为问题修复版本,修复了核心序列化/反序列化、Java records 支持以及 fastjson 1.x 兼容层中的多个问题。建议所有用户升级。
问题修复
- 修复序列化包含数组类型字段的类时抛出
ClassFormatError的问题 #4009 #4014 - 修复循环中途扩容后
strBuf未同步,可能导致输出损坏的问题 #7671 #7676 - 修复 record 类中泛型失效的问题 #3156 #4027
- 修复全局命名策略未应用于 Java records 的问题 #7656 #7657
- 修复
MethodHandles.Lookup初始化顺序——在读取IMPL_LOOKUP之前完成初始化 #7691 #7718 - 修复 Java 数组的
additionalItemsschema 校验 #7709 - (兼容层)为
JSONArray添加serialVersionUID,兼容 Java 序列化 #7687 #7698 - (兼容层)修复 fastjson 1.x 兼容层 JSONPath 连续写入失效的问题 #7697
- (兼容层)添加
ParserConfig.propertyNamingStrategy,兼容 fastjson 1.x #7740
Maven 依赖配置
标准版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.64</version>
</dependency>Android 5 优化版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.64.android5</version>
</dependency>Android 8 优化版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.64.android8</version>
</dependency>fastjson 2.0.63版本发布
FASTJSON 2.0.63 Release Notes
Release Date: 29 Jul 2026
Tag: 2.0.63 (82eda3e)
Overview
This is a security fix release. It hardens AutoType deserialization and fixes several parser robustness issues (OOM / DoS) that can be triggered by crafted input. All users are strongly recommended to upgrade, especially applications parsing untrusted JSON or JSONB data.
Users who cannot upgrade immediately can mitigate the AutoType issue with -Dfastjson2.parser.safeMode=true (applications not using a custom AutoTypeBeforeHandler).
fastjson 1.x users: the same AutoType hardening is available in fastjson 1.2.84.
Security Fixes
- Strengthened AutoType type name validation and whitelist verification: type names containing URL-special characters are rejected before reaching the class loader; the accept name text is verified after a whitelist hash match so a hash collision alone cannot whitelist a type; an accept prefix no longer covers
ClassLoader/DataSource/RowSetgadget base types — only an accept entry naming the type in full is treated as an explicit opt-in #7703 - Limited number literal digits to prevent
BigIntegerO(n²) DoS with crafted long number literals #7668 #7694 - Fixed JSONB
BC_BIGINTdeclared-length OOM from crafted payloads declaring a huge length #7669 #7696 - Fixed JSONB
BC_BINARYdeclared-length OOM #7669 #7705
Changes & Bug Fixes
- Fixed missing reference detection for
Collectionelements (e.g.HashSet), duplicate elements now serialize as$refwhenReferenceDetectionis on #7678 #7701 - Fixed Metaspace leak caused by
ObjectWritercreated in the switch block ofgetObjectWriterInternal#7626 #7627 - Fixed performance: hoisted
getInt/setIntout of lambda to avoid per-call spin #7677 #7693 - Added support for JSONCompiled records #7665
- Added warning when a Kotlin class loses field values due to missing kotlin-reflect #7675
Maven Dependency Configuration
Standard Version
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.63</version>
</dependency>Android 5 Optimized Version
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.63.android5</version>
</dependency>Android 8 Optimized Version
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.63.android8</version>
</dependency>中文版本
概述
本版本为安全修复版本,加固了 AutoType 反序列化校验,并修复了多个可由构造输入触发的解析健壮性问题(OOM / DoS)。强烈建议所有用户升级,尤其是解析不可信 JSON 或 JSONB 数据的应用。
暂时无法升级的用户,可通过 -Dfastjson2.parser.safeMode=true 缓解 AutoType 问题(适用于未使用自定义 AutoTypeBeforeHandler 的应用)。
fastjson 1.x 用户:同款 AutoType 加固已在 fastjson 1.2.84 中提供。
安全修复
- 加强 AutoType 类型名校验与白名单验证:包含 URL 特殊字符的类型名在到达类加载器之前即被拒绝;白名单 hash 命中后增加文本回验,仅 hash 碰撞无法再绕过白名单;accept 前缀不再覆盖
ClassLoader/DataSource/RowSet等危险基类——只有完整类名的 accept 条目才视为显式放行 #7703 - 限制数字字面量位数,防止构造的超长数字触发
BigIntegerO(n²) DoS #7668 #7694 - 修复 JSONB
BC_BIGINT声明长度 OOM(构造超大长度声明的 payload)#7669 #7696 - 修复 JSONB
BC_BINARY声明长度 OOM #7669 #7705
变更与问题修复
- 修复
Collection元素(如HashSet)缺少引用检测的问题,开启ReferenceDetection时重复元素现在正确序列化为$ref#7678 #7701 - 修复
getObjectWriterInternalswitch 分支中创建的ObjectWriter未缓存导致的 Metaspace 泄漏 #7626 #7627 - 性能修复:将
getInt/setInt移出 lambda,避免每次调用自旋 #7677 #7693 - 支持 JSONCompiled records #7665
- 缺少 kotlin-reflect 导致 Kotlin 类字段值丢失时增加警告日志 #7675
Maven 依赖配置
标准版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.63</version>
</dependency>Android 5 优化版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.63.android5</version>
</dependency>Android 8 优化版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.63.android8</version>
</dependency>fastjson 2.0.61版本发布
FASTJSON 2.0.61 Release Notes
Release Date: 07 Feb 2026
Tag: 2.0.61 (170f71f)
Overview
This is a regularly scheduled maintenance release with feature enhancements, performance improvements, and bug fixes. Users should upgrade as needed.
Changes & Bug Fixes
- Fixed issue where Jackson's
@JsonPropertyon methods was being ignored in record types #3893 - Fixed multiple
ArrayIndexOutOfBoundsExceptionissues inJSONReaderUTF8,JSONReaderASCII, andJSONReader#3883 - Improved performance when parsing JSON with numerous escape characters #3889
- Fixed conflict where global Date writer overrides
@JSONFieldformat #3864 - Fixed
TypeUtils.castToTimestampcompatibility issues when upgrading from 1.2.83 #3906 #3907 - Added support for serializing non-finite numbers (NaN, Infinity) as strings #3911
- Added default value support for
getStringand othergetXXXmethods #3880 - Fixed double quotes issue in
TypeUtils.castwith Long global converter #3932 - Added Java 8
TimeModulesupport including improvedYearMonthsupport #3934 #3935 - Fixed scientific notation floating point deserialization errors #3917 #3939 #3955
- Added serialization support for
org.w3c.dom.Node#3960 - Fixed exception when parsing object keys with emoji and escape characters #3928
- Fixed generic type inference for
Listsubclasses during deserialization #3926 - Added support for custom error messages in JSON Schema validation #1559
- Added
parse(InputStream)overload with default context #3946 - Fixed
DirectByteBufferUnsupportedOperationExceptionforjava.nio.ByteBuffer#array#3894 - Added support for composing multiple filters (
PropertyFilter,PropertyPreFilter, etc.) #3877 - Fixed incorrect overflow check when parsing
BigIntegerasDouble - Enhanced security checks in hex digit processing
- Improved
readStringperformance inJSONReaderUTF8/JSONReaderUTF16 - Fixed various issues with
WriteNulls,ErrorOnNullForPrimitives,NotWriteDefaultValue, and other features - Added ProGuard rules for fields affected by reflection operations
- Fixed cast error when using
-Dfastjson2.creator=reflect#1563
Maven Dependency Configuration
Standard Version
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.61</version>
</dependency>Android 5 Optimized Version
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.61.android5</version>
</dependency>Android 8 Optimized Version (supports java.time and Optional)
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.61.android8</version>
</dependency>1.x Compatible Version
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.61</version>
</dependency>Spring 5 Extension
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring5</artifactId>
<version>2.0.61</version>
</dependency>Spring 6 Extension
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring6</artifactId>
<version>2.0.61</version>
</dependency>JAX-RS Extension
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-jaxrs</artifactId>
<version>2.0.61</version>
</dependency>JAX-RS Jakarta Extension
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-jaxrs-jakarta</artifactId>
<version>2.0.61</version>
</dependency>Related Links
- Fastjson 1.x Upgrade Guide
- Related Issues
- Code Tag
- Maven Download
- Android 5 Optimized Version
- Android 8 Optimized Version
- 1.x Compatible Version
- Performance Benchmark Report
FASTJSON 2.0.61 发布说明
发布日期: 2026年2月7日
标签: 2.0.61 (170f71f)
概述
这是定期维护版本,包含功能增强、性能改进和问题修复。建议用户根据需要升级。
变更与问题修复
- 修复 Jackson 的
@JsonProperty注解在 record 类型的方法上被忽略的问题 #3893 - 修复
JSONReaderUTF8、JSONReaderASCII和JSONReader中的多个ArrayIndexOutOfBoundsException问题 #3883 - 优化包含大量转义字符的 JSON 解析性能 #3889
- 修复全局 Date writer 覆盖
@JSONFieldformat 格式的冲突问题 #3864 - 修复从 1.2.83 版本升级时
TypeUtils.castToTimestamp的兼容性问题 #3906 #3907 - 新增支持将非有限数字(NaN、Infinity)序列化为字符串 #3911
- 为
getString等getXXX方法新增默认值参数支持 #3880 - 修复使用 Long 全局转换器时
TypeUtils.cast出现双引号的问题 #3932 - 新增 Java 8
TimeModule支持,包括改进的YearMonth支持 #3934 #3935 - 修复科学计数法浮点数反序列化错误 #3917 #3939 #3955
- 新增对
org.w3c.dom.Node的序列化支持 #3960 - 修复解析包含 emoji 和转义字符的对象键时的异常 #3928
- 修复
List子类在反序列化时无法自动推断泛型类型的问题 #3926 - 新增 JSON Schema 校验时支持自定义错误消息 #1559
- 新增带默认上下文的
parse(InputStream)重载方法 #3946 - 修复
DirectByteBuffer调用java.nio.ByteBuffer#array时的UnsupportedOperationException#3894 - 新增支持组合多个过滤器(
PropertyFilter、PropertyPreFilter等)#3877 - 修复将
BigInteger解析为Double时溢出检查不正确的问题 - 增强十六进制数字处理的安全检查
- 改进
JSONReaderUTF8/JSONReaderUTF16的readString性能 - 修复
WriteNulls、ErrorOnNullForPrimitives、NotWriteDefaultValue等特性的多个问题 - 为受反射操作影响的字段添加 ProGuard 规则
- 修复使用
-Dfastjson2.creator=reflect时的类型转换错误 #1563
Maven 依赖配置
标准版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.61</version>
</dependency>Android 5 优化版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.61.android5</version>
</dependency>Android 8 优化版本(支持 java.time 和 Optional)
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.61.android8</version>
</dependency>1.x 兼容版本
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.61</version>
</dependency>Spring 5 扩展
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring5</artifactId>
<version>2.0.61</version>
</dependency>Spring 6 扩展
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring6</artifactId>
<version>2.0.61</version>
</dependency>JAX-RS 扩展
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-jaxrs</artifactId>
<version>2.0.61</version>
</dependency>JAX-RS Jakarta 扩展
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-jaxrs-jakarta</artifactId>
<version>2.0.61</version>
</dependency>相关链接
fastjson 2.0.60发布
这又是一个定期维护的功能增强BUG FIX版本,大家按需升级。
Issues
- 修复dubbo使用时报错not support none-Serializable的问题 #3499
- 修复dubbo使用时字段带缺省值是序列化丢失字段的问题 #3765 #3842
- 增加JSONObject.getIntValue方法处理默认值 #3772
- JSONArray.getJSONObject行为保持和JSONObject一样 #2989
- 修复JSONField(deserialize = false)在public字段不生效的问题
- 增强日期格式反序列化支持 #3102
- 补充fastjson2-extension-jaxrs-jakarta的发版 #3767
- 修复枚举使用
@ JsonProperties之后结果错误的问题 #3799 - 修复某些场景反序列化
java.util.Collections#EMPTY_LIST报错的问题 #3828 - 修复JSONPath.eval(jsonString, path)和fastjson 1.x某些场景不兼容的问题 #3825
- 反序列化时增加Feature.DisableStringArrayUnwrapping #3757
- 修复codegen的问题 #3836 #3833
MAVEN依赖配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.60</version>
</dependency>- android5针对优化版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.60.android5</version>
</dependency>- android8针对优化版本
这个版本支持java.time和Optional
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.60.android8</version>
</dependency>- 1.x 兼容版本
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.60</version>
</dependency>- Spring 5 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring5</artifactId>
<version>2.0.60</version>
</dependency>- Spring 6 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring6</artifactId>
<version>2.0.60</version>
</dependency>3. 相关链接
- FASTJSON 1.x用户升级指南 https://github.com/alibaba/fastjson2/wiki/fastjson_1_upgrade_cn
- 相关issues https://github.com/alibaba/fastjson2/milestone/60
- 代码tag https://github.com/alibaba/fastjson2/tree/2.0.60
- Maven下载 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.60/
- Android5特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.60.android5/
- Android8特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.60.android8/
- 1.x兼容版本 https://repo1.maven.org/maven2/com/alibaba/fastjson/2.0.60/
- 性能测试报告 https://github.com/alibaba/fastjson2/blob/main/docs/benchmark/benchmark_2.0.60.md
fastjson 2.0.59发布
这又是一个定期维护的功能增强BUG FIX版本,大家按需升级。
Issues
- 修复在部分Android机型上崩溃的问题 #3769
- 修复Android分支processObjectInputSingleItemArray()函数内部产生空指针的问题 #3770
- JSONArray/JSONObject增加getLocalDate/getLocalDateTime方法
- 修复某些场景解析非法JSON数据导致JVM Crash的问题 #3761
- 修复JSONB谢衣反序列化AtomicLong报错的问题 #3771
- 修复序列化Spring RefreshScope Bean导致内存不停上涨的问题
- 修复Android分支和master部分BUG fix不同步的问题 #3710
- 支持Long类型序列化日期格式 #3407
- 修复WriteNullNumberAsZero行为和fastjson 1行为不一致的问题 #3702
- 修复解析Set[...]某些场景报错的问题 #3692
- 增加对webflux的支持 #1501 #3691
- 修复JSONWriter.Feature.FieldBased 和 LocalDate冲突的问题 #3602
- 增强对base64格式解析的问题 #3681
MAVEN依赖配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.59</version>
</dependency>- android5针对优化版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.59.android5</version>
</dependency>- android8针对优化版本
这个版本支持java.time和Optional
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.59.android8</version>
</dependency>- 1.x 兼容版本
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.59</version>
</dependency>- Spring 5 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring5</artifactId>
<version>2.0.59</version>
</dependency>- Spring 6 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring6</artifactId>
<version>2.0.59</version>
</dependency>3. 相关链接
- FASTJSON 1.x用户升级指南 https://github.com/alibaba/fastjson2/wiki/fastjson_1_upgrade_cn
- 相关issues https://github.com/alibaba/fastjson2/milestone/59
- 代码tag https://github.com/alibaba/fastjson2/tree/2.0.59
- Maven下载 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.59/
- Android5特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.59.android5/
- Android8特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.59.android8/
- 1.x兼容版本 https://repo1.maven.org/maven2/com/alibaba/fastjson/2.0.59/
- 性能测试报告 https://github.com/alibaba/fastjson2/blob/main/docs/benchmark/benchmark_2.0.59.md
Fastjson 2.0.58版本发布
这又是一个定期维护的功能增强BUG FIX版本,大家按需升级。
- 修复序列化Enum子类结果不对的问题 #3464
- 修复cglib代理对象序列化结果不对的问题 #3445
- 修复graalvm native-image运行报错的问题 #3274 #3108 #3587
- 支持LabelFilter,兼容fastjson 1.x #2974
- 增强fastjson 1.x的兼容 #2850
- 支持jax-rs #2490
- 修复android在 Unsafe报错的问题 #2263 #3576 #3636
- 支持SkipTransientField,兼容fastjson 1.x #3368 #3659
- 修复无法反序列化包含$ref的数组字符串的问题 #3436
- 支持更多场景base64字符串反序列化 #3497
- 修复Dubbo 使用 Fastjson2.0.57 版本时提示 not support none-Serializable #3499
- 修复基本类型在Feature.NotWriteDefaultValue下表现不一致 #3183 #3518
- 修复JSONObject.toJavaObject在final List字段时会导致重复元素的问题 #2944
- 修复JSONPath.set在某些数组场景无法替换的问题 #3375
- 修复JSONPath有些场景无法解析数组数据的问题 #3331
- 修复某些场景空字符串无法被当成空值处理的问题 #3537
- 修复某些场景Boolean类型反序列化结果不对的问题 #3539
- 修复某些场景JSONObject::from结果丢失泛型信息的问题 #3569
- 修复JSON解析数值时未区分0.0和-0.0的问题 #3613
- 修复某些场景不抛出JSONException的问题 #3610
- 新增加JSONWriter.Feature.WriterUtilDateAsMillis 方便fastjson 1.x用户迁移
- 修复某些场景子类反序列化字段丢失的问题 #3621
- 修复自定义List类型不支持自定义序列化的问题 #3601
- 修复BigDecimal scale为负时序列化长度计算不对报越界的问题 #3595
- 修复数组元素后面带有注释时反序列化失败 #3547
- 修复
@JSONField(defaultValue="")和fastjson 1.x不兼容的问题 - 修复BigDecimal在前字段带多余空格时某些场景报错的问题 #3665
MAVEN依赖配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.58</version>
</dependency>- android5针对优化版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.58.android5</version>
</dependency>- android8针对优化版本
这个版本支持java.time和Optional
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.58.android8</version>
</dependency>- 1.x 兼容版本
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.58</version>
</dependency>- Spring 5 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring5</artifactId>
<version>2.0.58</version>
</dependency>- Spring 6 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring6</artifactId>
<version>2.0.58</version>
</dependency>3. 相关链接
- FASTJSON 1.x用户升级指南 https://github.com/alibaba/fastjson2/wiki/fastjson_1_upgrade_cn
- 相关issues https://github.com/alibaba/fastjson2/milestone/58
- 代码tag https://github.com/alibaba/fastjson2/tree/2.0.58
- Maven下载 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.58/
- Android5特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.58.android5/
- Android8特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.58.android8/
- 1.x兼容版本 https://repo1.maven.org/maven2/com/alibaba/fastjson/2.0.58/
- 性能测试报告 https://github.com/alibaba/fastjson2/blob/main/docs/benchmark/benchmark_2.0.58.md
Fastjson 2.0.57版本发布
这又是一个定期维护的功能增强BUG FIX版本,大家按需升级。
Issues
- 提升了序列化Double和忽略字段的性能
- 修复单引号反序列化时不支持忽略大小写匹配的问题 #3381
- 修复UseBigDecimalForDoubles解析浮点数结果不对的问题 #3382
- JSONArray/JSONObject增加getLocalDate/getLocalDateTime系列方法 #3337
- 修复序列化Kotlin类忽略private field的问题 #3287
- 修复某些场景toJSON/toJavaObject缺失字段的问题 #2227
- 修复反序列化java.util.SubList报错的问题 #3364
- 修复SeeAlso父类是接口反序列化报错的问题 #3357 #3440
- 修复反序列化record不支持alternateNames的问题 #3351
- 修复2.0.56引入的字段多导致jit报错的问题 #3367
- 修复无上海时区环境报错的问题 #3450
- 修复2.0.56引入的非规范Double.NaN序列化报错的问题 #3449
- 修复某些场景不支持注释的问题 #3446
- 修复多层List字段序列化报错的问题 #3444 #3433
- 修复2.0.54引入的不匹配类型反序列化String结果不对的问题 #3438
- 兼容fastjson 1.x,序列化忽略ClassLoader类型字段
- 修复非当前ClassLoader类型toJavaObject导致ClassNotFound的问题 #3420
- 修复输入类型为Object.class时,reference解析不生效的问题 #3452
MAVEN依赖配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.57</version>
</dependency>- android5针对优化版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.57.android5</version>
</dependency>- android8针对优化版本
这个版本支持java.time和Optional
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.57.android8</version>
</dependency>- 1.x 兼容版本
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.57</version>
</dependency>- Spring 5 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring5</artifactId>
<version>2.0.57</version>
</dependency>- Spring 6 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring6</artifactId>
<version>2.0.57</version>
</dependency>3. 相关链接
- FASTJSON 1.x用户升级指南 https://github.com/alibaba/fastjson2/wiki/fastjson_1_upgrade_cn
- 相关issues https://github.com/alibaba/fastjson2/milestone/57
- 代码tag https://github.com/alibaba/fastjson2/tree/2.0.57
- Maven下载 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.57/
- Android5特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.57.android5/
- Android8特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.57.android8/
- 1.x兼容版本 https://repo1.maven.org/maven2/com/alibaba/fastjson/2.0.57/
- 性能测试报告 https://github.com/alibaba/fastjson2/blob/main/docs/benchmark/benchmark_2.0.57.md
fastjson 2.0.56版本发布,性能进一步提升
这个版本进一步提升了性能,并且修复了2.0.54发布以来用户反馈的BUG。
Issues
- 修复JSONReaderJSONB未实现readArray方法的问题 #3332
- 修复字符串中有
@type且位置不在json串开始位置时和fastjson 1.x行为不一致的问题 #3284 - 新增加API支持JSON::configEnumAsJavaBean #3286
- 增强对反序列化对单元素数组的支持,和fastjson 1.x行为一致 #3276
- 增强对kotlin的支持 #3288
- 增加对单引号boolean的支持 #3283
- 增加对enum上的Jackson JsonProperty配置的支持 #2804
- 增强对parseLong报错的信息 #2749
- 增加JSONReader.Feature.DisableReferenceDetect,并且自动识别不合法的reference path #3347
- 新增加JSONField.contentAs配置,并且兼容Jackson JsonSerialize.contentAs #3335
MAVEN依赖配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.56</version>
</dependency>- android5针对优化版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.56.android5</version>
</dependency>- android8针对优化版本
这个版本支持java.time和Optional
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.56.android8</version>
</dependency>- 1.x 兼容版本
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.56</version>
</dependency>- Spring 5 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring5</artifactId>
<version>2.0.56</version>
</dependency>- Spring 6 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring6</artifactId>
<version>2.0.56</version>
</dependency>3. 相关链接
- FASTJSON 1.x用户升级指南 https://github.com/alibaba/fastjson2/wiki/fastjson_1_upgrade_cn
- 相关issues https://github.com/alibaba/fastjson2/milestone/56
- 代码tag https://github.com/alibaba/fastjson2/tree/2.0.56
- Maven下载 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.56/
- Android5特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.56.android5/
- Android8特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.56.android8/
- 1.x兼容版本 https://repo1.maven.org/maven2/com/alibaba/fastjson/2.0.56/
- 性能测试报告 https://github.com/alibaba/fastjson2/blob/main/docs/benchmark/benchmark_2.0.56.md
fastjson 2.0.54版本发布,性能进一步提升
这又是一个性能优化Bug修复的版本更新版本,大家按需升级。
1. 性能优化
这个版本的性能优化包括:
1.1 使用SWAR(SIMD Within A Register)技巧来优化序列化字符串的性能
序列化时,写字符串检测是否存在特别字符是一个性能关键点,这个版本使用SWAR(SIMD Within A Register)的技巧来做快速检测。如下
package com.alibaba.fastjson2;
class JSONWriterUTF8 {
protected final long byteVectorQuote;
JSONWriterUTF8(Context ctx) {
// " -> 0x22, ' -> 0x27
this.byteVectorQuote = this.useSingleQuote ? 0x2727_2727_2727_2727L : 0x2222_2222_2222_2222L;
}
public void writeStringLatin1(byte[] value) {
final long vecQuote = this.byteVectorQuote;
int i = 0;
final int upperBound = (value.length - i) & ~7;
// 这里一次检测8个byte是否存在特别字符
for (; i < upperBound; i += 8) {
if (containsEscaped(IOUtils.getLongLittleEndian(value, i), vecQuote)) {
break;
}
}
// ...
}
static boolean containsEscaped(long v, long quote) {
/*
for (int i = 0; i < 8; ++i) {
byte c = (byte) data;
if (c == quote || c == '\\' || c < ' ') {
return true;
}
data >>>= 8;
}
return false;
*/
long x22 = v ^ quote; // " -> 0x22, ' -> 0x27
long x5c = v ^ 0x5c5c5c5c5c5c5c5cL;
x22 = (x22 - 0x0101010101010101L) & ~x22;
x5c = (x5c - 0x0101010101010101L) & ~x5c;
return ((x22 | x5c | (0x7F7F_7F7F_7F7F_7F7FL - v + 0x1010_1010_1010_1010L) | v) & 0x8080808080808080L) != 0;
}
}1.2 优化在JDK 16+的readString性能
在JDK 16+的版本下,使用StringLatin1.indexOfChar方法加速扫描特殊字符,优化readString的性能。这个算法来自 wycst 的贡献。
class JSONReaderASCII {
static final int ESCAPE_INDEX_NOT_SET = -2;
protected int nextEscapeIndex = ESCAPE_INDEX_NOT_SET;
public String readString() {
int slashIndex = nextEscapeIndex;
if (slashIndex == ESCAPE_INDEX_NOT_SET || (slashIndex != -1 && slashIndex < offset)) {
nextEscapeIndex = slashIndex = IOUtils.indexOfChar(bytes, '\\', offset, end);
}
if (slashIndex == -1 || slashIndex > index) {
valueLength = index - offset;
offset = index;
// ...
}
}- 获取StringLatin1.IndexOfChar MethodHandle的代码 https://github.com/alibaba/fastjson2/blob/2.0.54/core/src/main/java/com/alibaba/fastjson2/util/JDKUtils.java#L342
1.3 int/long/float/double的读取写性能
优化的技巧是一次性读取两个数字,如下:
package com.alibaba.fastjson2;
class JSONReaderUTF8 {
public final int readInt32Value() {
// ...
while (inRange
&& offset + 1 < end
&& (digit = IOUtils.digit2(bytes, offset)) != -1
) {
// max digits is 19, no need to check inRange (result == MULT_MIN_100 && digit <= (MULT_MIN_100 * 100 - limit))
if (inRange = (result > INT_32_MULT_MIN_100)) {
result = result * 100 - digit;
offset += 2;
}
}
}
}package com.alibaba.fastjson2.util;
class IOUtils {
public static int digit2(byte[] bytes, int off) {
short x = UNSAFE.getShort(bytes, ARRAY_BYTE_BASE_OFFSET + off);
if (BIG_ENDIAN) {
x = Short.reverseBytes(x);
}
int d;
if ((((x & 0xF0F0) - 0x3030) | (((d = x & 0x0F0F) + 0x0606) & 0xF0F0)) != 0
) {
return -1;
}
return ((d & 0xF) << 3) + ((d & 0xF) << 1) // (d & 0xF) * 10
+ (d >> 8);
}
}这个优化最初灵感源泉来自 https://github.com/wycst/wast 的 io.github.wycst.wast.json.JSONTypeDeserializer.NumberImpl#deserializeInteger所采用的算法,然后做了进一步的改进。
2. Issues
- 修复toJSONString实际可用空间小于预设的问题 #255
- 格式化输出支持使用空格代替Tab,新增两个JSONWriter.Feature为PrettyFormatWith2Space和PrettyFormatWith4Space
- 修复非法输入缺少第一个花括号
{不报错的问题 #2592 - 增强识别枚举,原来不能识别toString的结果,新增识别toString的结果。 #2820
- JSONObject.to 支持Void.class和void.class返回null #2879
- 修复CSVWriter写入CSV数据超过 65536 个字节时报错 #2988
- 修复SeeAlso类型父类是Abstract类型时JVM Crash的问题 #2987
- 修复初始化JSONFactory某些场景会导致循环依赖导致死锁的问题 #2994
- 修复JSON.toJSON方法行为和JSON.toJSONString不一致的问题 #2981
- 增强对注释的支持 #2983
- 修复某些场景JSONWriter.Feature.WriteNulls导致Long/Double序列化结果为Null的问题 #3049
- 修复toJavaObject方法不能识别早期时间毫秒到LocalDateTime的转换问题 #3091
- 修复反序列化private Class结果和toJavaObject方法结果不一致的问题 #3134
- 增强fastjson 1.x的兼容性 #3208 #2739 # 3144 #3157
- 增强对Record的支持 #3090
- JSONPath支持使用path设置List中的对象 #3125
- 修复private Boolean类型字段使用valueFilter报错的问题 #3076
- 修复JDK 9+ writeStringEscaped某些场景数组越界报错 #3209
- 增加对Key为Map类型的反序列化支持 #3214
- JSON.parseObject方法在某些情况下反序列化编码出错的问题 #3223 #3219
- 支持修改useGsonAnnotation 配置 #3258
fastjson2缺省是能识别Gson的Annotation的,这个可以通过接口或者JVM启动参数关闭
import com.alibaba.fastjson2.JSONFactory;
// 手工关闭
JSONFactory.setUseGsonAnnotation(false);也支持通过JVM启动参数关闭
-Dfastjson2.useGsonAnnotation=false
MAVEN依赖配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.54</version>
</dependency>- android5针对优化版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.54.android5</version>
</dependency>- android8针对优化版本
这个版本支持java.time和Optional
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.54.android8</version>
</dependency>- 1.x 兼容版本
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.54</version>
</dependency>- Spring 5 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring5</artifactId>
<version>2.0.54</version>
</dependency>- Spring 6 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring6</artifactId>
<version>2.0.54</version>
</dependency>3. 相关链接
- FASTJSON 1.x用户升级指南 https://github.com/alibaba/fastjson2/wiki/fastjson_1_upgrade_cn
- 相关issues https://github.com/alibaba/fastjson2/milestone/54
- 代码tag https://github.com/alibaba/fastjson2/tree/2.0.54
- Maven下载 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.54/
- Android5特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.54.android5/
- Android8特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.54.android8/
- 1.x兼容版本 https://repo1.maven.org/maven2/com/alibaba/fastjson/2.0.54/
- 性能测试报告 https://github.com/alibaba/fastjson2/blob/main/docs/benchmark/benchmark_2.0.54.md
fastjson 2.0.53版本发布
这又是一个月度更新版本,大家按需升级。
Issues
- 支持DisableSingleQuote配置 #2908
- 修复配置JSONField#ignore之后导致死循环的问题 #2914
- 反序列化java.util.Date类型支持HH:mm:ss格式输入 #2905
- 修复兼容Jackson Annotation JsonUnwrapped某些场景不起作用的问题 #2846
- 修复兼容Jackson Annotation JsonFormat某些场景不起作用的问题 #2836
- 修复JSONB格式反序列化是忽略不存在Double/LocalDate字段报错的问题 #2823 #2907 #2902
- 修复反序列化java.util.RandomAccessSubList类型报错的问题 #2851
- DefaultObjectWriterProvider和DefaultObjectReaderProvider提供clear方法 #2860
- 修复某些场景反序列化LocalDateTime报错的问题 #2817
- 修复CSVWriter在writeDecimal计算空间不对的问题 #2848
- 修复JSONReader.Feature.UseBigDecimalForFloats行为不对的问题 #2866 #2867
- 修复使用 fastjson1 的 JSON.toJSON() 方法,转换后的数据中存在 com.alibaba.fastjson2.JSONArray #2856
- 修复与lombok AllArgsConstructor冲突的问题 #2901
- 支持Clickhouse UnsignedLong类型序列化 #2958
- 修复JSONB DUMP DECIMAL类型某些场景报错的问题 #2954
- 支持更多场景JSONSchema #2931
- 修复Long/Double字段配置JSONField#serializeFeatures WriteNulls不生效的问题 #2952
- 修复某些场景配置JSONType#alphabetic=false不生效的问题 #2959
2. MAVEN依赖配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.53</version>
</dependency>- android5针对优化版本
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.53.android5</version>
</dependency>- android8针对优化版本
这个版本支持java.time和Optional
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.53.android8</version>
</dependency>- 1.x 兼容版本
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.53</version>
</dependency>- Spring 5 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring5</artifactId>
<version>2.0.53</version>
</dependency>- Spring 6 extension配置
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring6</artifactId>
<version>2.0.53</version>
</dependency>3. 相关链接
- FASTJSON 1.x用户升级指南 https://github.com/alibaba/fastjson2/wiki/fastjson_1_upgrade_cn
- 相关issues https://github.com/alibaba/fastjson2/milestone/53
- 代码tag https://github.com/alibaba/fastjson2/tree/2.0.53
- Maven下载 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.53/
- Android5特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.53.android5/
- Android8特别优化版本 https://repo1.maven.org/maven2/com/alibaba/fastjson2/fastjson2/2.0.53.android8/
- 1.x兼容版本 https://repo1.maven.org/maven2/com/alibaba/fastjson/2.0.53/
- 性能测试报告 https://github.com/alibaba/fastjson2/blob/main/docs/benchmark/benchmark_2.0.53.md