FastJSON

Exception in thread "main" com.alibaba.fastjson.JSONException: autoType is not support. cn.com.bsfit.frms.obj.AuditResult

github: http://git.oschina.net/wenshao/fastjsonhtml

fastjson 使用手冊,偷點懶,嘿嘿java

http://www.w3cschool.cn/fastjson/fastjson-quickstart.htmlgit

1.普通github

JSON.toJSONString(對象);
或
JSONObject.toJSONString(對象);

2.自定義輸出參數json

   a. 直接在實體中屬性中使用註解  bash

@JSONField(serialize=false) //序列化:該字段不輸出  可是若是加了final,這個字段就沒法被過濾 
@JSONField(derialize=false) //反序列化:該字段不輸出  可是若是加了final,這個字段就沒法被過濾 
@JSONField(format=」yyyy-MM-dd HH:mm」) //日期按照指定格式輸出
@JSONField(name="別名");//使用別名
@JSONField(serialzeFeatures={SerialzeFeatures屬性});//序列化
@JSONField(parseFeatures={Features屬性});//反序列化

@JSONField(format=」yyyy-MM-dd HH:mm」)ui

   b. 使用toJSONString 的重載方法,添加  SerializerFeature 參數 自定義輸入spa

SerializerFeature屬性.net

   WriteEnumUsingNamecode

名稱 含義 支持版本
QuoteFieldNames 輸出key時是否使用雙引號,默認爲true  
UseSingleQuotes 使用單引號而不是雙引號,默認爲false  
WriteMapNullValue 是否輸出值爲null的字段,默認爲false  
WriteEnumUsingToString

Enum輸出name()或者original,默認爲false

用枚舉toString()輸出

 
WriteEnumUsingToName 用枚舉name()輸出
UseISO8601DateFormat Date使用ISO8601格式輸出,默認爲false  
WriteNullListAsEmpty List字段若是爲null,輸出爲[],而非null 1.1
WriteNullStringAsEmpty 字符類型字段若是爲null,輸出爲」「,而非null 1.1
WriteNullNumberAsZero 數值字段若是爲null,輸出爲0,而非null 1.1
WriteNullBooleanAsFalse Boolean字段若是爲null,輸出爲false,而非null 1.1
SkipTransientField

若是是true,類中的Get方法對應的Field是transient

,序列化時將會被忽略。默認爲true

1.1
SortField 按字段名稱排序後輸出。默認爲false 1.1
WriteTabAsSpecial 把\t作轉義輸出,默認爲false 1.1.1 (不推薦)
PrettyFormat 結果是否格式化,默認爲false 1.1.2
WriteClassName 序列化時寫入類型信息,默認爲false。反序列化是需用到 1.1.2
DisableCircularReferenceDetect 消除對同一對象循環引用的問題,默認爲false 1.1.6
WriteSlashAsSpecial 對斜槓’/’進行轉義 1.1.9
BrowserCompatible

將中文都會序列化爲\uXXXX格式,字節數會多一些

,可是能兼容IE 6,默認爲false

1.1.10
WriteDateUseDateFormat

全局修改日期格式,默認爲false。

1.1.14
NotWriteRootClassName   1.1.15
DisableCheckSpecialChar

一個對象的字符串屬性中若是有特殊字符如雙引號,

將會在轉成json時帶有反斜槓轉移符。若是不須要轉義,

能夠使用這個屬性。默認爲false

1.1.19
BeanToArray 將對象轉爲array輸出 1.1.35
WriteNonStringKeyAsString

Map<Integer,Stirng> 輸出 key 默認爲 Integer

添加此屬性,Integer 添加了 「」,變成字符型

1.1.37
NotWriteDefaultValue 將基礎類型的默認值屏蔽 1.1.42
BrowserSecure   1.2.6
IgnoreNonFieldGetter   1.2.7

修改 fastjson 日期默認日期方式。

JSON.DEFFAULT_DATE_FORMAT = "YYYY-MM-dd HH:mm:ss";
JSON.toJSONString(topic,SerializerFeature.WriteDateUseDateFormat);

或者

JSONObject.toJSONStringWithDateFormat(topic,"YYYY-MM-dd HH:mm:ss")

報錯:

Exception in thread "main" com.alibaba.fastjson.JSONException: autoType is not support. cn.com.bsfit.frms.obj.AuditResult

修改方式:

ParserConfig.getGlobalInstance().setAutoTypeSupport(true);

輸出保持輸入順序:

JSONObject ao = new JSONObject(true);//默認使用 LinkedHashMap
JSON.toJSONStringZ(ao,SerializeConfig.getGlobalInstance(),SerializerFeature.WriteMapNullValue,SerializerFeature.QuoteFieldNames);

 

注意:SerializerFeature.QuoteFieldNames 默認爲true ,方法添加不起做用,緣由不明,彷佛沒法修改默認值true 爲 false。

相關文章
相關標籤/搜索