Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jackson将JSON映射到POJO_Java_Json_Jackson Databind - Fatal编程技术网

Java 使用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\\

我正在尝试使用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\\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);