@JsonAny(S | G}信函从1.7.4改为1.9.3?

时间:2011-12-25 17:44:29

标签: java json jackson

我有基本上执行以下操作的代码来读取添加到json的属性,例如:以下JSON {"operation":"write-attribute","address":[{"subsystem":"web"},{"connector":"http"}],"name":"socket-binding","value":"jndi"}中的'name'和'value'。 由于这些方法是通用的,我只能依赖于硬编码名称和值 - 其他json字符串可能包含应该被“捕获”的其他属性。

@JsonAnySetter
public void addAdditionalProperty(String key, Object value) {
    if (additionalProperties == null)
        additionalProperties = new HashMap<String, Object>();
    additionalProperties.put(key,value);
}

@SuppressWarnings("unused")
public void setAdditionalProperties(Map<String, Object> additionalProperties) {
    this.additionalProperties = additionalProperties;
}

@JsonAnyGetter
public Map<String,Object> getAdditionalProperties() {
    return this.additionalProperties;
}

@JsonIgnore
public String getName() {
   return (String) getProperty("name");
}

@JsonIgnore
public String getValue() {
   return (String) getProperty("value");
}

此代码适用于Jackson 1.7.4,但在1.9.3中未能设置additionalProperties。 我没有看到这是一个预期的变化,还是它是一个回归。

如果是预期的更改 - 是否有人知道如何“修复”我的代码再次使用?

完整代码is here,测试is here(第一次测试,OperationSerDeserTest)

1 个答案:

答案 0 :(得分:1)

对我来说听起来像是潜在的错误 - 最简单的方法是向用户列表发送问题,或者提交Jira。我可以做后者,看看能否看到会发生什么。