fastjson:SerializerFeature屬性使用
fastjson:SerializerFeature原始碼
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package com.alibaba.fastjson.serializer;
public enum SerializerFeature {
QuoteFieldNames,
UseSingleQuotes,
WriteMapNullValue,
WriteEnumUsingToString,
WriteEnumUsingName,
UseISO8601DateFormat,
WriteNullListAsEmpty,
WriteNullStringAsEmpty,
WriteNullNumberAsZero,
WriteNullBooleanAsFalse,
SkipTransientField,
SortField,
/** @deprecated */
@Deprecated
WriteTabAsSpecial,
PrettyFormat,
WriteClassName,
DisableCircularReferenceDetect,
WriteSlashAsSpecial,
BrowserCompatible,
WriteDateUseDateFormat,
NotWriteRootClassName,
DisableCheckSpecialChar,
BeanToArray,
WriteNonStringKeyAsString,
NotWriteDefaultValue,
BrowserSecure,
IgnoreNonFieldGetter;
private final int mask = 1 << this.ordinal();
private SerializerFeature() {
}
public final int getMask() {
return this.mask;
}
public static boolean isEnabled(int features, SerializerFeature feature) {
return (features & feature.getMask()) != 0;
}
public static boolean isEnabled(int features, int fieaturesB, SerializerFeature feature) {
int mask = feature.getMask();
return (features & mask) != 0 || (fieaturesB & mask) != 0;
}
public static int config(int features, SerializerFeature feature, boolean state) {
if(state) {
features |= feature.getMask();
} else {
features &= ~feature.getMask();
}
return features;
}
public static int of(SerializerFeature[] features) {
if(features == null) {
return 0;
} else {
int value = 0;
SerializerFeature[] var2 = features;
int var3 = features.length;
for(int var4 = 0; var4 < var3; ++var4) {
SerializerFeature feature = var2[var4];
value |= feature.getMask();
}
return value;
}
}
}
SerializerFeature屬性解釋
名稱 | 含義 | 備註 |
---|---|---|
QuoteFieldNames | 輸出key時是否使用雙引號,預設為true | |
UseSingleQuotes | 使用單引號而不是雙引號,預設為false | |
WriteMapNullValue | 是否輸出值為null的欄位,預設為false | |
WriteEnumUsingToString |
Enum輸出name()或者original,預設為false
|
|
WriteEnumUsingName | ||
UseISO8601DateFormat | Date使用ISO8601格式輸出,預設為false | |
WriteNullListAsEmpty | List欄位如果為null,輸出為[],而非null | |
WriteNullStringAsEmpty | 字元型別欄位如果為null,輸出為”“,而非null | |
WriteNullNumberAsZero | 數值欄位如果為null,輸出為0,而非null | |
WriteNullBooleanAsFalse | Boolean欄位如果為null,輸出為false,而非null | |
SkipTransientField | 如果是true,類中的Get方法對應的Field是transient,序列化時將會被忽略。 預設為true |
|
SortField | 按欄位名稱排序後輸出。預設為false | |
WriteTabAsSpecial | 把\t做轉義輸出,預設為false | 不推薦 |
PrettyFormat | 結果是否格式化,預設為false | 不推薦 |
WriteClassName | 序列化時寫入型別資訊,預設為false。反序列化是需用到 | 不推薦 |
DisableCircularReferenceDetect | 消除對同一物件迴圈引用的問題,預設為false
當進行toJSONString的時候,預設如果重用物件的話,會使用引用的方式進行引用物件。
迴圈引用很多場景中,我們需要序列化的物件中存在迴圈引用,在許多的json庫中,這會導致stackoverflow。在功能強大的fastjson中,你不需要擔心這個問題。例如:
引用是通過"$ref"來表示的 引用描述
|
不推薦 |
WriteSlashAsSpecial | 對斜槓’/’進行轉義 | 不推薦 |
BrowserCompatible | 將中文都會序列化為\uXXXX格式,位元組數會多一些,但是能相容IE 6,預設為false | 不推薦 |
WriteDateUseDateFormat | 全域性修改日期格式,預設為false。 JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”; JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat); |
不推薦 |
DisableCheckSpecialChar | 一個物件的字串屬性中如果有特殊字元如雙引號,將會在轉成json時帶有反斜槓轉移符。如果不需要轉義,可以使用這個屬性。預設為false | 不推薦 |
NotWriteRootClassName | 含義 | 不推薦 |
BeanToArray | 將物件轉為array輸出 | 不推薦 |
WriteNonStringKeyAsString | 不推薦 | |
NotWriteDefaultValue | 不推薦 | |
BrowserSecure | 不推薦 | |
IgnoreNonFieldGetter | 不推薦 |
JAVA使用
JSONObject.toJSONString(實體, SerializerFeature.WriteMapNullValue))
相關文章
- fastjson @JSONField與SerializerFeatureASTJSON
- FastJson bean序列化屬性順序問題ASTJSONBean
- Fastjson定製屬性的序列化和反序列化ASTJSON
- FastJSON使用案例(fastjson-1.1.28.jar)ASTJSONJAR
- JSONObject 專案啟動時初始化fastjson的Provider,新增SerializerFeature的策略為WriteMapNullValueJSONObjectASTIDENull
- CMake 屬性之全域性屬性
- FastJson使用詳解ASTJSON
- Java雙屬性列舉使用Java
- JavaScript:prototype屬性使用方法JavaScript
- app之使用者屬性APP
- Oracle 使用者 profile 屬性Oracle
- CSS grid屬性的使用CSS
- iOS動畫 屬性屬性解析iOS動畫
- defer 屬性和 async 屬性
- fastjson使用說明文件ASTJSON
- CSS 屬性篇(七):Display屬性CSS
- CMake 屬性之目標屬性
- CMake 屬性之目錄屬性
- <a>為空使用href屬性值填充
- WPF使用MVVM(一)-屬性繫結MVVM
- Android 樣式屬性的使用Android
- WPF 使用附加屬性宣告 ICommand
- CSS pointer-events屬性的使用CSS
- vue元件使用的細節 is 屬性Vue元件
- 使用 CSS 自定義屬性(變數)CSS變數
- Flutter GetX Tag 屬性使用詳解Flutter
- display的flex屬性使用詳解Flex
- Maven屬性(properties)標籤的使用Maven
- Android taskAffinity屬性使用詳解Android
- 使用windbg檢視DependencyObject的屬性Object
- JavaScript私有屬性和靜態屬性JavaScript
- 使用屬性Props完成一張卡片
- 初識屬性動畫——使用Animator建立動畫動畫
- iOS使用shell指令碼批量修改屬性iOS指令碼
- MongoDB – 使用模式構建之屬性模式MongoDB模式
- Vue元件中prop屬性使用說明Vue元件
- 精讀《使用 CSS 屬性選擇器》CSS
- vue例項中watch屬性的使用Vue