我在服务器上有一个课程:
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序列化器来完成这项工作?
答案 0 :(得分:1)
格式不同:
您可以在服务器上使用Views在运行时决定要包含哪些属性。然后,新客户端可以请求与旧客户端相同的内容,但使用不同的参数/标头或通过不同的API路径,只使用具有新属性的新视图。
格式相同:
如果旧客户端不支持新格式,则不能简单地强制它支持它而不修改客户端。事实上,如果你可以做这样的事情,那将是非常危险的,因为这意味着现有的应用程序不能依赖于它们的格式限制。
但是,如果您可以修改旧客户端,您可以执行以下操作:
@JsonIgnoreProperties(ignoreUnknown = true)
添加到旧客户端的POJO objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);