发布于
1.2.83
com.alibaba.fastjson.serializer.SerializerFeature
| 特性名称 | 默认状态 | 功能描述 |
|---|---|---|
| QuoteFieldNames | 启用 | 字段名用双引号包裹 |
| UseSingleQuotes | 禁用 | 使用单引号代替双引号 |
| WriteMapNullValue | 禁用 | 序列化时输出值为 null 的字段 |
| WriteEnumUsingToString | 禁用 | 序列化枚举值时调用 toString() 方法 |
| WriteEnumUsingName | 启用 | 序列化枚举值时调用 name() 方法 |
| UseISO8601DateFormat | 禁用 | 使用ISO8601日期格式 |
| WriteNullListAsEmpty | 禁用 | 1.1 将 null 的集合字段输出为 []
|
| WriteNullStringAsEmpty | 禁用 | 1.1 将 null 的字符串字段输出为 ""
|
| WriteNullNumberAsZero | 禁用 | 1.1 将 null 的数值字段输出为 0
|
| WriteNullBooleanAsFalse | 禁用 | 1.1 将 null 的布尔字段输出为 false
|
| SkipTransientField | 启用 | 1.1 忽略被 transient 修饰的字段 |
| SortField | 启用 | 1.1 排序字段 |
| 禁用 | 1.1.1 把\t做转义输出 | |
| PrettyFormat | 禁用 | 1.1.2 格式化输出(缩进和换行) |
| WriteClassName | 禁用 | 1.1.2 输出 @type 字段(支持多态反序列化) |
| DisableCircularReferenceDetect | 禁用 | 1.1.6 禁用循环引用检测(提升性能,但可能栈溢出) |
| WriteSlashAsSpecial | 禁用 | 1.1.9 对斜杠'/'进行转义 |
| BrowserCompatible | 禁用 | 1.1.10 对 Unicode 特殊字符进行转义(兼容浏览器场景) |
| WriteDateUseDateFormat | 禁用 | 1.1.14 使用全局日期格式(需配置 JSON.DEFFAULT_DATE_FORMAT) |
| NotWriteRootClassName | 禁用 | 1.1.15 不输出根类名 |
| 禁用 | 1.1.19 如果有特殊字符如双引号,将会在转成json时带有反斜杠转义符 | |
| BeanToArray | 禁用 | 1.1.35 将 Java 对象序列化为 JSON 数组(按字段定义顺序) |
| WriteNonStringKeyAsString | 禁用 | 1.1.37 将非字符串类型字段序列化为字符串形式 |
| NotWriteDefaultValue | 禁用 | 1.1.42 不设默认值 |
| BrowserSecure | 禁用 | 1.2.6 浏览器安全,将<>()字符做转义输出 |
| IgnoreNonFieldGetter | 禁用 | 1.2.7 忽略为空的属性 |
| WriteNonStringValueAsString | 禁用 | 1.2.9 将非字符串类型值序列化为字符串形式 |
| IgnoreErrorGetter | 禁用 | 1.2.11 忽略那些抛错的getter方法 |
| WriteBigDecimalAsPlain | 禁用 | 1.2.16 将 BigDecimal 序列化为普通数值(不科学计数法) |
| MapSortField | 禁用 | 1.2.27 对Map中的键值对进行排序 |
com.alibaba.fastjson.parser.Feature
| 特性名称 | 默认状态 | 功能描述 |
|---|---|---|
| AutoCloseSource | 启用 | 自动关闭输入流 |
| AllowComment | 禁用 | 允许 JSON 中包含 // 或 /* */ 注释 |
| AllowUnQuotedFieldNames | 启用 | 允许字段名不加双引号 |
| AllowSingleQuotes | 启用 | 允许字段值使用单引号 |
| InternFieldNames | 启用 | 缓存字段名(提升性能) |
| AllowISO8601DateFormat | 禁用 | 识别和处理 ISO 8601 标准的时间格式 |
| AllowArbitraryCommas | 启用 | 允许在JSON字符串中存在任意逗号,即使它们不在键值对之间 |
| UseBigDecimal | 启用 | 将浮点数解析为 BigDecimal(避免精度丢失) |
| IgnoreNotMatch | 启用 | 1.1.3 忽略无法匹配的字段(不抛异常) |
| SortFeidFastMatch | 启用 | 1.1.3 排序字段优先匹配 |
| DisableASM | 禁用 | 1.1.3 禁用ASM |
| DisableCircularReferenceDetect | 禁用 | 1.1.7 是否检测循环引用 |
| InitStringFieldAsEmpty | 禁用 | 1.1.10 对于没有值得字符串属性设置为空串 |
| SupportArrayToBean | 禁用 | 1.1.35 允许将 JSON 数组反序列化为 JavaBean |
| OrderedField | 禁用 | 1.2.3 按字段定义顺序解析 JSON |
| DisableSpecialKeyDetect | 禁用 | 1.2.5 关闭特殊字符的转义 |
| UseObjectArray | 禁用 | 1.2.9 |
| SupportNonPublicField | 禁用 | 1.2.22, 1.1.54.android |
| IgnoreAutoType | 禁用 | 1.2.29 |
| DisableFieldSmartMatch | 禁用 | 1.2.30 禁用字段名智能匹配(如驼峰转下划线) |
| SupportAutoType | 禁用 | 1.2.41, backport to 1.1.66.android 允许通过 @type 自动反序列化多态类型(高危,需白名单控制) |
| NonStringKeyAsString | 禁用 | 1.2.42 |
| CustomMapDeserializer | 禁用 | 1.2.45 |
| ErrorOnEnumNotMatch | 禁用 | 1.2.55 |
| SafeMode | 禁用 | 1.2.68 |
| TrimStringFieldValue | 禁用 | 1.2.72 |
| UseNativeJavaObject | 禁用 | 1.2.77 use HashMap instead of JSONObject, ArrayList instead of JSONArray |
com.alibaba.fastjson.parser.ParserConfig
| 配置项 | 默认值 | 功能描述 |
|---|---|---|
| AutoTypeSupport | false |
是否启用 @type 自动类型推断(强烈建议保持关闭) |
| SafeMode | false |
严格模式(仅允许反序列化内置基础类型,需手动配置白名单) |
| AsmEnable | true |
启用 ASM 字节码技术加速反序列化 |
| DefaultClassLoader | null |
指定类加载器用于加载反序列化类 |
| CheckAutoType | true |
反序列化时检查类名是否在白名单中 |
| AutoTypeCheckHandler | null |
自定义 @type 校验处理器 |
| DenyClassNames | 内置 | 默认拒绝反序列化的危险类列表(如 java.lang.ProcessBuilder) |
com.alibaba.fastjson.JSON
| 配置项 | 默认值 | 功能描述 |
|---|---|---|
| JSON.DEFAULT_DATE_FORMAT | null |
全局日期格式(如 "yyyy-MM-dd HH:mm:ss") |
| JSON.DEFAULT_GENERATE_FEATURE | 动态 | 全局默认启用的序列化特性掩码 |
| JSON.DEFAULT_PARSER_FEATURE | 动态 | 全局默认启用的反序列化特性掩码 |