所以我有json文件,像:

{ "id" : 1,
   "includingJson" : {"foo" : "bar"}
}


我有一些DTO,例如:

...
public class SubscriptionDTO extends AbstractDTO{
  private Long id;
  private JsonNode includingJson;


但是在我尝试通过代码将JSON转换为POJO之后

public static <T> T jsonStringToDto(Class<?> dtoClass, String jsonContent) {
  ObjectMapper mapper = new ObjectMapper();
  try {
    return (T) mapper.readValue(jsonContent, dtoClass);
  } catch (IOException e) {
    log.error(e);
  }
  return (T) new Object();
}


我收到错误消息Can not construct instance of org.codehaus.jackson.JsonNode, problem: abstract types either need to be mapped to concrete types, have custom deserializer, or be instantiated with additional type information
所以主要的问题-我该如何解决?

最佳答案

似乎您导入了错误的JsonNode,该版本较旧。正确使用的类是com.fasterxml.jackson.databind.JsonNode,它可以工作。在Jackson 2.8上进行了测试。另外,为了确保正常工作,最好是DTO类具有getter,setter和no-arg构造函数。因此,更新版本。

关于java - 如何在DTO模型中使用JsonNode类型实现字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53886127/

10-11 12:19