我正在尝试序列化包含 HashMap 的对象,但出现以下异常。
com.fasterxml.jackson.dataformat.csv.CsvMappingException: Unrecognized column 'tags': known columns: ["_id","insertDate"] (through reference chain.
另外,我不明白为什么在序列化方面需要有一个模式。在我看来,没有办法拥有一个无法识别的字段,因为它都是在类中指定的。
因为我不太了解杰克逊,所以我搜索并尝试了这两个注释的各种组合。@JsonUnwrapped
@JsonAnyGetter
class Product{
public @Id String _id;
@JsonUnwrapped
private HashMap<String, String> tags = new HashMap<>();
public String insertDate;
@JsonAnyGetter
public HashMap<String, String> getTags() {
return tags;
}
@JsonAnySetter
public void setTags(HashMap<String, String> tags) {
this.tags = tags;
}
}
用于序列化的代码
CsvSchema schema = csvMapper.schemaFor(Product.class).withHeader();
ObjectWriter myObjectWriter = csvMapper.writer(schema);
csvMapper.enable(CsvParser.Feature.IGNORE_TRAILING_UNMAPPABLE);
csvMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
string = myObjectWriter.writeValueAsString(someProduct);
尝试 NR 2
public class Product {
public @Id String _id;
public Map<String, String> tags = new HashMap<>();
public String insertDate;
@JsonAnyGetter
public Map<String, String> getTags() {
return tags;
}
@JsonAnySetter
public void setTags(Map<String, String> tags) {
this.tags = tags;
}
}
新错误
com.fasterxml.jackson.dataformat.csv.CsvMappingException: CSV generator does not support Object values for properties (nested Objects) (through reference chain: main.model.Product["tags"])