javajackson两次写入对象

javajackson两次写入对象,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

我有一个包含字符串字段和映射字段的类。我想使用Jackson将其序列化为json

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;}
}