从 JSON 转换为 Java 对象的最通用方法是将 JSON 捕获为Map<String, Object>. 由此(或直接)我可以轻松转换为 POJO:
User user = objectMapper.convertValue(jsonMap, User.class);
Run Code Online (Sandbox Code Playgroud)
原始 JSON 中不存在的任何User字段都将设置为其默认值。虽然这对于创建新对象(响应(例如)API 调用)非常有用,但它不适用于更新POJO。
我想要实现的是使用 Jackson 从传入的 JSON更新现有对象。User这意味着:
UserPOJO 中在传入 JSON 中没有任何对应属性的字段将被保留。这对杰克逊来说可能吗?
您可以用来readerForUpdating创建一个ObjectReader
用于构造 ObjectReader 的工厂方法,它将使用 JSON 数据更新给定的对象(通常是 Bean,但也可以是 Collection 或 Map,但不是数组)。
然后readValue使用ObjectReader:
使用此读取器的配置绑定从给定 JSON 字符串读取的内容的方法。返回值要么是新构造的,要么是用 指定的根值
withValueToUpdate(Object)。
在类似于此的代码中:
ObjectReader objectReader = objectMapper.readerForUpdating(objectToUpdate);
MyType objectUpdated = objectReader.readValue(inputJson);
Run Code Online (Sandbox Code Playgroud)