FastJson 對enum的 序列化(ordinal)和反序列化

  1. 目前版本的fastjon默認對enum對象使用WriteEnumUsingName屬性,所以會將enum值序列化爲其Name。
  2. 使用WriteEnumUsingToString方法能夠序列化時將Enum轉換爲toString()的返回值;同時override toString函數可以將enum值輸出須要的形式。可是這樣作會帶來一個問題,對應的反序列化使用的Enum的靜態方法valueof可能沒法識別自行生成的toString(),致使反序列化出錯。
  3. 若是將節省enum序列化後的大小,能夠將enum序列化其ordinal值,保存爲int類型。fastJson在反序列化時,若是值爲int,則可以使用ordinal值匹配,找到合適的對象。
    fastjson要將enum序列化爲ordinal只須要禁止WriteEnumUsingName feature。
    首先根據默認的features排除WriteEnumUsingName,而後使用新的features序列化便可。json

    int features=SerializerFeature.config(JSON.DEFAULT_GENERATE_FEATURE, SerializerFeature.WriteEnumUsingName, false)
    JSON.toJSONString(obj,features,SerializerFeature.EMPTY);ide

相關文章
相關標籤/搜索