【发布时间】:2015-11-19 08:58:46
【问题描述】:
假设,我有以下课程:
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ObjectOfMonitoring {
private BigInteger id;
private Map<String, Object> properties = new HashMap<>();
@JsonAnySetter
public void add(String key, Object value) {
properties.put(key, value);
}
@JsonAnyGetter
public Map<String, Object> getProperties() {
return properties;
}
我在下面的代码中测试它:
ObjectOfMonitoring objectOfMonitoring = new ObjectOfMonitoring();
objectOfMonitoring.setId(BigInteger.ONE);
objectOfMonitoring.add("key1", "value1");
String jsonInString = mapper.writeValueAsString(objectOfMonitoring);
System.out.println(jsonInString);
我想得到结果:
{"id":1,"key2":"value2","key1":"value1"}
但实际结果是:
{"id":1,"properties":{"key2":"value2","key1":"value1"}}
我做错了什么?以及如何得到预期的结果?
【问题讨论】:
-
stackoverflow.com/questions/33797404/… 的可能重复项您只是继续问同样的问题,而忽略了回答前一个问题的努力?
-
@sharonbn 抱歉,我已经解释了为什么我创建了这个问题(实际上是错误的)here。但我仍然不明白为什么这个解决方案(使用@jsonanygetter)不起作用。
-
这一次我会让别人花时间和精力去调查。