繁体   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