亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

RestTemplate JSON 反序列化

RestTemplate JSON 反序列化

飲歌長嘯 2022-07-20 20:17:58
所以讓我們假設我們有兩個系統(系統 A 和系統 B)以 JSON 格式交換信息,但是,來自系統 B 的人不想真正合作,并聲稱所有帶有有效負載的東西都很好,因為它是“語法上的”正確的 JSON?,F在讓我們假設你有以下 json 結構   {    "INFO": {        "Animal": {            "Cat": {}        }    }   }這確實是一個有效的 JSON,但問題是你可以擁有一只或多只動物,所以在更多動物的場景中,有效載荷是:   {    "INFO": {        "Animal": [{            "Cat": {},"Dog" :{}        }]    }   }只是這次你可以看到 Animal 對象實際上是一個對象數組......所以系統 A 使用 RestTemplate 來解析響應并且存在問題,因為“語法上”正確的 JSON 每次的結構都不同。此外,錯誤也可能出現在 JSON 中 - 如果出現錯誤,JSON 看起來像:"ERRORS" : {[error1, error2, etc.]},但如果沒有錯誤,它會出現"ERRORS" : ""所以請告訴我,我希望有效負載保持一致并像往常一樣獲得一組對象,無論是一個還是多個,并且在沒有錯誤的情況下沒有錯誤節點,或者我錯過了什么?我正在使用 RestTemplate 和當有效負載帶有一個動物時(我的 pojo 需要 1 個或多個)-> 它失敗,因為它無法將單個對象解析為數組列表。如果我將它更改為只期望一只動物 - 當不止一只動物出現時它會失敗。不僅如此 - "ERRORS" : "" 被視為一個字符串,這再次導致解析問題。那么是否有一些“hack”方法可以讓 RestTemplate 中的 Jackson 反序列化器來處理這個“語法上”正確的 JSON,或者 JSON 的整體結構應該得到澄清和一致(我的觀點)
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

看起來你想DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY在你的ObjectMapper:


ObjectMapper mapper = new ObjectMapper()

mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);


查看完整回答
反對 回復 2022-07-20
  • 1 回答
  • 0 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號