有一个功能和一个注释正好适合此目的。
经过测试,它可以像您的示例一样使用UUID:
class MyUUIDClass { public int knownField; Map<String, UUID> unknownFields = new HashMap<>(); // Capture all other fields that Jackson do not match other members @JsonAnyGetter public Map<String, UUID> otherFields() { return unknownFields; } @JsonAnySetter public void setOtherField(String name, UUID value) { unknownFields.put(name, value); }}它将像这样工作:
MyUUIDClass deserialized = objectMapper.readValue("{" + ""knownField": 1," + ""foo": "9cfc64e0-9fed-492e-a7a1-ed2350debd95"" + "}", MyUUIDClass.class);同样,更常见的类型(例如字符串)也可以工作:
class MyClass { public int knownField; Map<String, String> unknownFields = new HashMap<>(); // Capture all other fields that Jackson do not match other members @JsonAnyGetter public Map<String, String> otherFields() { return unknownFields; } @JsonAnySetter public void setOtherField(String name, String value) { unknownFields.put(name, value); }}(我首先在此博客文章中找到了此功能)。



