摘要:然后,斷點看一下轉(zhuǎn)換的內(nèi)容,找到看到這里突然想起這個好像前面有遇到過,下面簡單說下產(chǎn)生問題的原因這代表了是一種引用,它是在轉(zhuǎn)換字符串的時候出現(xiàn)的,在引用了同一對象時出現(xiàn)。
問題產(chǎn)生
最開始問題是在C層的單元測試中產(chǎn)生的:
報錯提示我們說:引用瞬態(tài)值,引用之前應(yīng)該保存一下。
問題解決1.這好說,一看是minMeasureScaleUnit沒有保存,那么保存一下就行了。然而沒有用。
2.既然不起作用,那么說明這是別的方式引起的。斷點調(diào)試一下。
發(fā)現(xiàn)在模擬發(fā)起http請求之前,minMeasureScaleUnit的值是存在的,并且已經(jīng)保存,但是傳到方法中的時候就出問題了,minMeasureScaleUnit成一個空對象了。這就說明在轉(zhuǎn)換成json字符串的時候出現(xiàn)問題了。
然后,斷點看一下轉(zhuǎn)換的內(nèi)容,找到minMeasureScaleUnit:
看到這里突然想起這個好像前面有遇到過,下面簡單說下產(chǎn)生問題的原因:
$ref這代表了是一種引用,它是FastJson在轉(zhuǎn)換Json字符串的時候出現(xiàn)的,在引用了同一對象時出現(xiàn)。解決辦法
“$”代表根對象,所以后面就是告訴我們引用了哪個對象。
當(dāng)后臺接收這種形式的Json對象的時候,并沒有將引用再替換回來,所以minMeasureScaleUnit就不是我們最開始的對象了,也就出現(xiàn)了最開始的沒有保存的問題。
FastJson已經(jīng)提供給我們了解決辦法,在轉(zhuǎn)換的時候,添加一個參數(shù)SerializerFeature.DisableCircularReferenceDetect,禁用引用就行了:
String jsonObject = JSON.toJSONString(newNonMandatoryInstrument, SerializerFeature.DisableCircularReferenceDetect);總結(jié)
這個問題前面的時候遇到過,但是沒有及時的復(fù)習(xí),導(dǎo)致這次解決問題的時候又用了不少的時間。
參考鏈接:
https://github.com/json-schem...
https://blog.csdn.net/wxwzy73...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/76848.html
數(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ù)引用 指一個對象重復(fù)出現(xiàn)多次 循環(huán)引用 指你...
摘要:但是將導(dǎo)入工程后,在使用時會出現(xiàn)等錯誤消息。初步認(rèn)為是與自帶的沖突。再運行工程,這個錯誤不再出現(xiàn)了,奇跡般的沒問題了。我的理解是這樣,不知道對不對,歡迎大俠指正。工程中下默認(rèn)的是,而則應(yīng)該是。所以按照該文的解決方法,更改就好了。 JSON解析庫有很多,諸如Jackson,Json-lib,org.json,Gson和fastjson等,但是fastjson以其解析速度最快而脫穎而出。詳...
摘要:某年某月的某一天,本汪在某個奇葩的公司,接手了某個奇葩的項目,遇到了一些奇葩的事情,就掉進(jìn)關(guān)于做轉(zhuǎn)換時,那些關(guān)于首字符大小寫的坑??邮鬃址?,第二個字符大寫的鍵名這個坑與相關(guān),嚴(yán)格來說,應(yīng)該是挖的坑。 某年某月的某一天,本汪在某個奇葩的公司,接手了某個奇葩的項目,遇到了一些奇葩的事情,就掉進(jìn)關(guān)于fastjson做bean to json轉(zhuǎn)換時,那些關(guān)于首字符大小寫的坑。 這個奇葩項目...
摘要:而我現(xiàn)在直接返回的是對象。跟進(jìn)去方法,在最后調(diào)用方法將值付給和再回到前面的重寫方法最后返回轉(zhuǎn)換好的字符串。到這里整個轉(zhuǎn)換流程就已經(jīng)結(jié)束了。 一、前言 最近老大說要新增一個試用廣告的功能,我巴拉巴拉的從之前推送廣告那里將代碼cv過來,然后跟老大說搞定了!過一會老大說返回的json格式不對!于是乎我瞧了瞧: { adsArea1:{ adsMaterials:[ ...
閱讀 1576·2023-04-26 01:58
閱讀 2477·2021-11-04 16:04
閱讀 1910·2021-08-31 09:42
閱讀 1922·2021-07-25 21:37
閱讀 1179·2019-08-30 15:54
閱讀 2196·2019-08-30 15:53
閱讀 3150·2019-08-29 13:28
閱讀 2811·2019-08-29 10:56