數(shù)據(jù)傳輸使用json格式再方便不過了。
fastjson 由阿里巴巴那伙人使用Java語言編寫,號稱最快的JSON庫
前兩天遇到一個問題 后臺的數(shù)據(jù)轉(zhuǎn)化為json字符串后發(fā)送到前臺出現(xiàn)了$ref字樣的東西,后來明白了這是引用,在傳輸?shù)臄?shù)據(jù)中出現(xiàn)相同的對象時,fastjson默認(rèn)開啟引用檢測將相同的對象寫成引用的形式.
說到引用分為兩種,重復(fù)引用和循環(huán)引用
指一個對象重復(fù)出現(xiàn)多次
循環(huán)引用指你心里有我,我心里有你(互相引用),這個問題比較嚴(yán)重,如果處理不好就會出現(xiàn)StackOverflowError異常
重復(fù)引用的解決方法;1.單個關(guān)閉 JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect); 2.全局配置關(guān)閉 JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.DisableCircularReferenceDetect.getMask();循環(huán)引用的解決方法:
1.如果你前端用不到這個屬性在該屬性的get方法上加上注解@JSONField(serialize=false), 這樣該屬性就不會被序列化出來,這個也可以解決重復(fù)引用 2.修改表結(jié)構(gòu),出現(xiàn)循環(huán)引用了就是一個很失敗的結(jié)構(gòu)了,不然準(zhǔn)備迎接StackOverflowError異常。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70937.html
摘要:問題在雙向映射時,會相互包含對方的實例,相互引用,造成遞歸迭代,堆棧溢出。分析在后端向前端傳遞的時候會將數(shù)據(jù)序列化,轉(zhuǎn)為,這時會出現(xiàn)循環(huán)引用造成堆棧溢出解決方案解決方法就是在轉(zhuǎn)換時忽略循環(huán)字段。 問題: JPA 在雙向映射時,會相互包含對方的實例,相互引用,造成遞歸迭代,堆棧溢出(java.lang.StackOverflowError)。 分析: 在后端向前端傳遞的時候會將數(shù)據(jù)序列化...
摘要:然后,斷點看一下轉(zhuǎn)換的內(nèi)容,找到看到這里突然想起這個好像前面有遇到過,下面簡單說下產(chǎn)生問題的原因這代表了是一種引用,它是在轉(zhuǎn)換字符串的時候出現(xiàn)的,在引用了同一對象時出現(xiàn)。 問題產(chǎn)生 最開始問題是在C層的單元測試中產(chǎn)生的: showImg(https://segmentfault.com/img/bVbfUny?w=1322&h=278); 報錯提示我們說:引用瞬態(tài)值,引用之前應(yīng)該保存一...
閱讀 1250·2023-04-26 01:38
閱讀 1462·2021-11-15 11:39
閱讀 3251·2021-09-22 15:43
閱讀 2638·2019-08-30 15:55
閱讀 2047·2019-08-30 14:17
閱讀 2851·2019-08-29 14:16
閱讀 3062·2019-08-26 18:36
閱讀 2607·2019-08-26 12:19