所以讓我們假設我們有兩個系統(系統 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);
添加回答
舉報
0/150
提交
取消