您可以使用JsonAnySetter
JsonAnyGetter批注。您可以在后面使用
Map实例。万一您总是
one-key-object可以
Collections.singletonMap在其他情况下使用
HashMap或其他实现。下面的示例显示了使用此方法并根据需要创建任意数量的
key-s是多么容易:
import com.fasterxml.jackson.annotation.JsonAnyGetter;import com.fasterxml.jackson.annotation.JsonAnySetter;import com.fasterxml.jackson.databind.ObjectMapper;import java.util.Collections;import java.util.Map;import java.util.Objects;public class JsonApp { public static void main(String[] args) throws Exception { DynamicJsonsFactory factory = new DynamicJsonsFactory(); ObjectMapper mapper = new ObjectMapper(); System.out.println(mapper.writevalueAsString(factory.createUser("Vika"))); System.out.println(mapper.writevalueAsString(factory.createPhone("123-456-78-9"))); System.out.println(mapper.writevalueAsString(factory.any("val", "VAL!"))); }}class Value { private Map<String, String> values; @JsonAnySetter public void put(String key, String value) { values = Collections.singletonMap(key, value); } @JsonAnyGetter public Map<String, String> getValues() { return values; } @Override public String toString() { return values.toString(); }}class DynamicJsonsFactory { public Value createUser(String name) { return any("name", name); } public Value createPhone(String number) { return any("phone", number); } public Value any(String key, String value) { Value v = new Value(); v.put(Objects.requireNonNull(key), Objects.requireNonNull(value)); return v; }}上面的代码打印:
{"name":"Vika"}{"phone":"123-456-78-9"}{"val":"VAL!"}


