Java 使用Jackson将JSON映射到POJO
我正在尝试使用jackson将JSON映射到POJO,但一直出现以下错误:Java 使用Jackson将JSON映射到POJO,java,json,jackson-databind,Java,Json,Jackson Databind,我正在尝试使用jackson将JSON映射到POJO,但一直出现以下错误: > Can not deserialize instance of java.lang.String out of START_OBJECT token\n at [Source: (String)\"{\"checkstyle\ 我试图解析的JSON如下所示: { "checkstyle": { "file": [ { "name": "src\\main\\java\\
> Can not deserialize instance of java.lang.String out of START_OBJECT token\n at [Source: (String)\"{\"checkstyle\
我试图解析的JSON如下所示:
{
"checkstyle": {
"file": [
{
"name": "src\\main\\java\\com\\report\\uploader\\controller\\RandomController.java",
"error": [
{
"severity": "error",
"line": 0,
"source": "com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocPackageCheck",
"message": "Missing package-info.java file."
}
]
}
],
"version": 6.18
}
}
为此,我创建了以下类:
public class Checkstyle {
@JsonProperty("checkstyle")
private Linter linterName;
}
public class Linter {
@JsonProperty("file")
private List<File> files;
@JsonProperty("version")
private String version;
}
public class File {
@JsonProperty("name")
private String name;
@JsonProperty("error")
private List<Error> errores;
}
public class Error {
@JsonProperty("severity")
private String severity;
@JsonProperty("line")
private int line;
@JsonProperty("source")
private String source;
@JsonProperty("message")
private String message;
}
如果有人能指出我做错了什么,我将不胜感激。这是导致程序
mapper.readValue(object.toString(),Checkstyle.class)出错的一行。
。您已经将json读入一个匿名的对象
,然后在ObjectMapper中使用它的toString()
表示来映射到Checkstyle
类,这将永远不会起作用。因为您已经将json字符串丢失到对象的java默认toString表示中:someObjectClassname@hashcodenumber
下面是执行正确反序列化的readValue
方法的一些常用签名:
readValue(输入流输入,c类)readValue(读卡器rd,c类)
readValue(字符串json,c类)
ObjectMapper mapper = new ObjectMapper();
Checkstyle checkstyle = mapper.readValue(object.toString(), Checkstyle.class);