我正在使用 JSON Jackson 2.0 将数据模型写入文件,然后将其加载回应用程序中。我可以成功地将对象写入字符串,但在尝试将其编码(marshal)回对象时遇到以下错误消息:
找不到类型[简单类型,类 ImportAttributeModel] 的合适构造函数:无法从 JSON 对象实例化(需要添加/启用类型信息?) [来源:用户;行:1,列:111](通过引用链:ImportTemplateModel[“modelList”])
这是我的类的代码片段:
public class ImportTemplateModel
{
private Map<Integer, AttributeModel> m_modelList;
private GraphElementType m_type;
public ImportTemplateModel()
{
}
// getters & setters
}
public class AttributeModel
{
private String m_label;
private String m_key;
private ElementDefinition m_definition;
public AttributeModel(String label, String key, ElementDefinition def)
{
m_label = label;
m_key = key;
m_definition = def;
}
// getters & setters
}
这是我编写和读取模型的调用:
// Write model
ObjectMapper mapper = new ObjectMapper();
ImportTemplateModel itm = new ImportTemplateModel()
// set model atttributes
...
//
try {
mapper.writeValue(new File(filepath), itm);
}
catch (IOException e) {
}
....
// Read Model
ObjectMapper mapper = new ObjectMapper();
try {
mapper.readValue(new File(filepath), ImportTemplateModel.class);
}
catch (IOException e) {
}
我不确定我现在做错了什么...是因为 AttributeModel 不是 POJO 吗?或者我不能使用 map 来实现此实现?如果是这样,我该如何解决这个问题?
最佳答案
它需要有一个无参构造函数,以便 Jackson 可以实例化它。
关于java - 使用 JSON 编码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13169250/