gpt4 book ai didi

java - 我可以在服务器端添加一个新字段来响应,并且旧客户端不会因 jackson 反序列化而中断吗?

转载 作者:行者123 更新时间:2023-12-01 09:54:36 24 4
gpt4 key购买 nike

我在服务器上上课:

Class A{
int x;
int y;
// getters and setters
}

在旧客户端

Class A{
int x;
}

在新客户端

Class A{
int x;
int y;
}

现在我无法更改旧的客户端代码,客户端给出 org.codehaus.jackson.map.exc.UnrecognizedPropertyException。我可以更改服务器或新的客户端代码。

我怎样才能让 jackson 序列化器工作?

最佳答案

不同的格式:

您可以使用Views在服务器上决定在运行时要包含哪些属性。然后,新客户端可以请求与旧客户端相同的内容,但使用不同的参数/ header 或通过不同的 API 路径,仅使用具有新属性的新 View 。

相同格式:

如果旧客户端不支持新格式,则不能在不修改客户端的情况下简单地强制它支持新格式。事实上,如果您可以这样做,那将非常危险,因为这意味着现有应用程序不能依赖其格式限制。

但是,如果您可以修改旧客户端,则可以执行以下操作:

  1. 添加@JsonIgnoreProperties(ignoreUnknown = true)到旧客户端中的 POJO
  2. 如果您无法修改 POJO,但可以访问 ObjectMapper:objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  3. 如果您可以访问 ObjectMapper,但又不想影响所有其他 POJO,则可以 mix-in the annotation就为了那个 POJO

关于java - 我可以在服务器端添加一个新字段来响应,并且旧客户端不会因 jackson 反序列化而中断吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37343331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com