Я пытаюсь сопоставить 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;
}
Но когда я запускаю код, я получаю ошибку, упомянутую выше. Я получаю этот JSON путем преобразования XML-файла в JSONObject с использованием зависимости org.json
, а затем JSONobject, который я преобразую в строку.
Затем я конвертирую, затем пытаюсь конвертировать строку в мой POJO следующим образом:
ObjectMapper mapper = new ObjectMapper();
Checkstyle checkstyle = mapper.readValue(object.toString(), Checkstyle.class);
Если бы кто-нибудь мог указать мне, что я делаю неправильно, я был бы признателен.