java - 使用 JSON 编码字符串

标签 java json jackson

我正在使用 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/

相关文章:

java - 如何防止servlet在收到get请求时创建新 session ?

java - 将 Realm 与 RxJava 2 结合使用

java - Spring 安全 : Show warning before overwriting session

python - 将 Base 64 字符串转换为 BytesIO

php - Ajax 和 php 响应不起作用

java - Jackson ObjectMapper 将值读取到特定的 Java 对象中

java - 手势检测器不工作

ios - 将 NSString 转换为 NSArray 并存储在 NSUserdefaults 中

java - Jackson JSON API反序列化流无法识别的字段

java - com.fasterxml.jackson.databind.exc.InvalidDefinitionException : No value type configured for ObjectReader