簡體   English   中英

使用JSON編組字符串

[英]Marshalling Strings by using JSON

我正在使用JSON Jackson 2.0將數據模型寫入文件,然后將其加載回應用程序中。 我可以成功地將對象寫入字符串,但是在嘗試將其編組回對象時遇到以下錯誤消息:

在類型[簡單類型,類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嗎? 還是我無法將Maps用於此實現? 如果是這樣,我該如何解決?

它需要有一個無參數的構造函數,以便Jackson可以實例化它。

例外:

com.fasterxml.jackson.databind.JsonMappingException:沒有為類型[簡單類型,類ImportDataModel $ ImportTemplateModel]找到合適的構造函數:無法從JSON對象實例化(需要添加/啟用類型信息嗎?)

建議ImportTemplateModel是一個內部類。 您的代碼段顯示該類不是靜態的。 如果它不是靜態的,則不能在其外部類ImportDataModel之外實例化它。 使它成為靜態或獨立類,它應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM