[英]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.