fastjson中Feature的用法及中文註解

原文鏈接:https://blog.csdn.net/zjkyx888/article/details/78673898

源碼

/**

 * 這個特性,決定了解析器是否將自動關閉那些不屬於parser自己的輸入源。 如果禁止,則調用應用不得不分別去關閉那些被用來創建parser的基礎輸入流InputStream和reader;如果允許,parser只要自己需要獲取closed方法(當遇到輸入流結束,或者parser自己調用 JsonParder#close方法),就會處理流關閉。

 * 注意:這個屬性默認是true,即允許自動關閉流

*/

AutoCloseSource

 

/**

 * 該特性決定parser將是否允許解析使用Java/C++ 樣式的註釋(包括'/'+'*' 和'//' 變量)。 由於JSON標準說明書上面沒有提到註釋是否是合法的組成,所以這是一個非標準的特性;儘管如此,這個特性還是被廣泛地使用。

 * 注意:該屬性默認是false,因此必須顯式允許,即通過JsonParser.Feature.ALLOW_COMMENTS 配置爲true。

*/

AllowComment

 

/**

 * 這個特性決定parser是否將允許使用非雙引號屬性名字, (這種形式在Javascript中被允許,但是JSON標準說明書中沒有)。

 * 注意:由於JSON標準上需要爲屬性名稱使用雙引號,所以這也是一個非標準特性,默認是false的。

 * 同樣,需要設置JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES爲true,打開該特性。

*/

AllowUnQuotedFieldNames

 

/**

 * 該特性決定parser是否允許單引號來包住屬性名稱和字符串值。

 * 注意:默認下,該屬性也是關閉的。需要設置JsonParser.Feature.ALLOW_SINGLE_QUOTES爲true

*/

AllowSingleQuotes

 

/**

 * 該特性決定JSON對象屬性名稱是否可以被String#intern 規範化表示。如果允許,則JSON所有的屬性名將會 intern() ;如果不設置,則不會規範化,默認下,該屬性是開放的。此外,必須設置CANONICALIZE_FIELD_NAMES爲true

 * 關於intern方法作用:當調用 intern 方法時,如果池已經包含一個等於此 String 對象的字符串 (該對象由 equals(Object) 方法確定),則返回池中的字符串。否則,將此 String

 * 對象添加到池中, 並且返回此 String 對象的引用。

 */

InternFieldNames

 

//這個設置爲true則遇到字符串符合ISO8601格式的日期時,會直接轉換成日期類。

AllowISO8601DateFormat

 

//允許多重逗號,如果設爲true,則遇到多個逗號會直接跳過;

AllowArbitraryCommas

 

//這個設置爲true則用BigDecimal類來裝載數字,否則用的是double;

UseBigDecimal

 

//忽略不匹配

IgnoreNotMatch

 

//如果你用fastjson序列化的文本,輸出的結果是按照fieldName排序輸出的,parser時也能利用這個順序進行優化讀取。這種情況下,parser能夠獲得非常好的性能

SortFeidFastMatch

 

//禁用ASM

DisableASM

 

//禁用循環引用檢測

DisableCircularReferenceDetect

 

//對於沒有值得字符串屬性設置爲空串

InitStringFieldAsEmpty

 

//支持數組to對象

SupportArrayToBean

 

//屬性保持原來的順序

OrderedField

 

//禁用特殊字符檢查

DisableSpecialKeyDetect

 

//使用對象數組

UseObjectArray;

 

 

用法

JSONObject reqJSON = JSONObject.parseObject(body, Feature.OrderedField);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章