异常 - 在将JSON列表转换为Java对象时,无法将java.util.LinkedHashMap强制转换为自定义对象

时间:2014-12-31 12:35:09

标签: java json jackson

我正在使用Facade模式来实现JSON转换。我有POJO类对应多个JSON结构。我有与每个POJO类对应的外观类。有一个AbstractFacade,它具有将JSON条目转换为Java对象的实现。

所以,这是一个例子:

books.json

     [
      {
        category : "self-help",
        count :268         
       },
       {
        category : "fiction",
        count :268         
        }  
    ]

Book.java

 public class Book {

          private String category;
          private int count;

          //getters and setters
 }

BookFacade.java

public class BookFacade extends AbstractFacade<Book> {
    public BookFacade() {
        super(Book.class);
        // TODO Auto-generated constructor stub
    }

@Override
public ArrayList<Book> readFileOfObjectList(String filePath){
    try {
        return super.readFileOfObjectList(filePath);
    } catch (JsonParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;


    } catch (JsonMappingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;


    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;

    }
  }     
}

AbstractFacade.java

public class AbstractFacade<T> implements JSONFileUtil{

private  Class<T> entityClass;

public Class<T> getEntityClass() {
    return entityClass;
}

public void setEntityClass(Class<T> entityClass) {
    this.entityClass = entityClass;
}

public AbstractFacade(Class<T> entityClass) {
    super();
    this.entityClass = entityClass;
}

class ListT extends ArrayList<T>{

}

@Override
public ListT readFileOfObjectList(String fileName) throws JsonParseException, JsonMappingException, IOException {
    // TODO Auto-generated method stub

    ObjectMapper mapper = new ObjectMapper();
    ListT list=mapper.readValue(new File(fileName), new TypeReference<ListT>(){});
    System.out.println("In abstract facade:"+list.get(0).getClass().getName());
    return list;
}



@Override
public void writeFile(String fileName, Object data) throws IOException {
    // TODO Auto-generated method stub

}

}

因此,我在主程序中创建了一个BookFacade对象,并调用方法readFileOfObjectList。我得到一个ArrayList,但其中的对象是LinkedHashMap类型。我在StackOverflow中检查了很多答案。但它们都不适合我。你能帮忙吗?

0 个答案:

没有答案
相关问题