簡體   English   中英

RestTemplate JSON反序列化

[英]RestTemplate JSON Deserialization

因此,假設我們有兩個系統(系統A和系統B)以JSON交換信息,但是,系統B的人員不希望真正合作,並聲稱帶有負載的一切都很好,因為它是“語法上”的正確的JSON。

現在,假設您具有以下json結構

   {
    "INFO": {
        "Animal": {
            "Cat": {}
        }
    }
   }

這確實是一個有效的JSON,但事實是您可以擁有一個或多個動物,因此在有更多動物的情況下,有效負載為:

   {
    "INFO": {
        "Animal": [{
            "Cat": {},
"Dog" :{}
        }]
    }
   }

只有這一次,您可以看到Animal對象實際上是對象數組...因此,系統A使用RestTemplate來解析響應,並且由於“語法上”正確的JSON每次在結構上都不同而存在問題。 此外,JSON中也可能發生錯誤-如果發生錯誤,則JSON看起來像: "ERRORS" : {[error1, error2, etc.]},

但是在沒有錯誤的情況下

"ERRORS" : ""

所以請告訴我,我是否希望有效載荷保持一致並像總是一個對象陣列一樣,無論一個或多個,並且在沒有錯誤的情況下也沒有錯誤節點,我是否錯了,還是我錯過了什么?

我正在使用RestTemplate和

當有效載荷帶有一個動物(我的pojo期望1個或多個)時->它失敗了,因為它無法將單個對象解析為數組列表。

如果我將其更改為只希望有一只動物-超過一只動物就會失敗。

不僅如此-“ ERRORS”:“”被視為一個字符串,這再次導致解析問題。

因此,在RestTemplate中是否有某種“ hack”方法可以使Jackson解串器處理此“語法上”正確的JSON,或者JSON的總體結構應該明確並保持一致(我認為)

謝謝!

看起來您想在ObjectMapper啟用DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY

ObjectMapper mapper = new ObjectMapper()
mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM