javajackson两次写入对象
我有一个包含字符串字段和映射字段的类。我想使用Jackson将其序列化为jsonjavajackson两次写入对象,java,json,jackson,Java,Json,Jackson,我有一个包含字符串字段和映射字段的类。我想使用Jackson将其序列化为json public class Mapping private String mAttribute; @JsonIgnore private Map<String, String> mMap; @JsonAnyGetter public Map<String, String> getMap() { //some logic to po
public class Mapping
private String mAttribute;
@JsonIgnore
private Map<String, String> mMap;
@JsonAnyGetter
public Map<String, String> getMap() {
//some logic to populate map
}
@JsonAnySetter
public void put(// some params) {
//some more logic
}
@JsonProperty(value = "attribute")
public String getAttribute() {
return mAttribute;
}
public void setAttribute(String aAttribute) {
mAttribute= aAttribute;
}
}
出于某种原因,它正在两次编写映射
实例myMappingObject
。我假设我没有在某处设置可见性选项,但我不知道在哪里
json看起来像这样,只是它在文件中出现了两次
{
"attribute" : "someValue",
"map-key1" : "map-value1",
"map-key2" : "map-value2"
}
有,但显然它是固定在杰克逊的前一个版本。我还尝试将方法的名称更改为
random()
,但它仍然会被调用两次(应该调用的次数)。问题与上述类无关。我正在使用另一个类,它有一个映射列表。之前:
public class MappingsList {
@JsonProperty
private List<Mapping> mappings;
public List<Mapping> getMappings() {return mappings;}
}
公共类映射列表{
@JsonProperty
私有列表映射;
public List getMappings(){return mappings;}
}
之后:
public class MappingsList {
private List<Mapping> mappings;
@JsonProperty
public List<Mapping> getMappings() {return mappings;}
}
公共类映射列表{
私有列表映射;
@JsonProperty
public List getMappings(){return mappings;}
}
它成功了。原因是ObjectMapper在MappingsList
类中看到了两(2)个属性,因此对这两个属性都进行了序列化。首先,它将为mappings
字段创建json,然后再次为getMappings()
方法创建json
public class MappingsList {
private List<Mapping> mappings;
@JsonProperty
public List<Mapping> getMappings() {return mappings;}
}