這是轉換時出現的問題情況( map >> json )
引用是通過"$ref"來表示的
引用 | 描述 |
---|---|
"$ref":".." | 上一級 |
"$ref":"@" | 當前對象,也就是自引用 |
"$ref":"$" | 根對象 |
"$ref":"$.children.0" | 基於路徑的引用,相當於 root.getChildren().get(0) |
如果出現這種情況在前端肯定是無法解析json成功的,所以要處理一下避免出現問題
處理方法:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
JSON.toJSONString(..., SerializerFeature.DisableCircularReferenceDetect)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
引申:
名稱 | 含義 | 備注 |
QuoteFieldNames | 輸出key時是否使用雙引號,默認為true | |
UseSingleQuotes | 使用單引號而不是雙引號,默認為false | |
WriteMapNullValue | 是否輸出值為null的字段,默認為false | |
WriteEnumUsingToString | Enum輸出name()或者original,默認為false
int features=SerializerFeature.config(JSON.DEFAULT_GENERATE_FEATURE, SerializerFeature.WriteEnumUsingName, 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 | |
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輸出 | 不推薦 |
使用 :JSONObject.toJSONString(實體, SerializerFeature.WriteMapNullValue))