java操作json對(duì)象出現(xiàn)StackOverflow錯(cuò)誤的問題及解決
java操作json對(duì)象出現(xiàn)StackOverflow錯(cuò)誤
今天在做項(xiàng)目的時(shí)候,遇到一個(gè)非常怪異的問題。一個(gè)java實(shí)體類中存在多個(gè)屬性,每一個(gè)屬性都是JsonObject類型。
在程序中用setXXX方法對(duì)這些屬性設(shè)置值的時(shí)候,竟然報(bào)了Stack Overflow的錯(cuò)誤。仔細(xì)檢查了一遍程序,確定沒有循環(huán)引用和死遞歸的發(fā)生。最后經(jīng)過和查閱相關(guān)資料,終于發(fā)現(xiàn)我用的JsonObject是net.sf.json包下的類。
在這個(gè)類庫中的json對(duì)象可能會(huì)存在多個(gè)對(duì)象之間的相互引用,導(dǎo)致程序最終報(bào)出了Stack Overflow的錯(cuò)誤。
解決方法
將成員屬性的類型設(shè)置為String字符串,避免出現(xiàn)上面的情況。或者使用fastjson來處理,fastjson在處理json對(duì)象的時(shí)候不會(huì)出現(xiàn)上面說的情況。
記錄一次json轉(zhuǎn)換對(duì)象的異常
今天在寫代碼時(shí)碰到了這樣一個(gè)問題,將Java對(duì)象轉(zhuǎn)換為JOSN字符串時(shí),出現(xiàn)了重復(fù)的字段“OPEN”和“TIMESTAMP”
這是Java對(duì)象代碼
經(jīng)實(shí)驗(yàn)發(fā)現(xiàn)只有這兩個(gè)字段會(huì)出現(xiàn)重復(fù)情況,猜測(cè)可能時(shí)由于該字段是特殊別名
對(duì)實(shí)例類做如下改動(dòng)
成功修復(fù)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Java實(shí)現(xiàn)動(dòng)態(tài)切換ubuntu壁紙功能
這篇文章主要為大家詳細(xì)介紹了如何使用 Java 在 Ubuntu Linux 系統(tǒng)中實(shí)現(xiàn)自動(dòng)切換壁紙的示例程序,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11Java IO文件編碼轉(zhuǎn)換實(shí)現(xiàn)代碼
這篇文章主要介紹了Java IO文件編碼轉(zhuǎn)換實(shí)現(xiàn)代碼,有需要的朋友可以參考一下2013-12-12spring AOP定義AfterThrowing增加處理實(shí)例分析
這篇文章主要介紹了spring AOP定義AfterThrowing增加處理,結(jié)合實(shí)例形式分析了spring面向切面AOP定義AfterThrowing相關(guān)實(shí)現(xiàn)步驟與操作技巧,需要的朋友可以參考下2020-01-01java中棧和隊(duì)列的實(shí)現(xiàn)和API的用法(詳解)
下面小編就為大家?guī)硪黄猨ava中棧和隊(duì)列的實(shí)現(xiàn)和API的用法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05Spring mvc工作原理_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Spring mvc工作原理的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08基于Java設(shè)計(jì)一個(gè)高并發(fā)的秒殺系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何基于Java設(shè)計(jì)一個(gè)高并發(fā)的秒殺系統(tǒng),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下2023-10-10