![](/img/trans.png)
[英]Map JSON to pojo using Jackson for List that have different parameters
[英]Map JSON to POJO Using Jackson
我正在嘗試使用傑克遜將JSON映射到POJO,並且不斷收到以下錯誤:
> Can not deserialize instance of java.lang.String out of START_OBJECT token\n at [Source: (String)\"{\"checkstyle\
嘗試解析的JSON Im如下:
{
"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的方法是使用org.json
依賴項將XML文件轉換為JSONObject,然后將JSONobject轉換為String。
然后我進行轉換,然后嘗試通過以下方式將String轉換為POJO:
ObjectMapper mapper = new ObjectMapper();
Checkstyle checkstyle = mapper.readValue(object.toString(), Checkstyle.class);
如果有人能指出我在做什么錯,我將不勝感激。
這是在您的程序mapper.readValue(object.toString(), Checkstyle.class)
引起錯誤的行。 您已經將json讀入一個匿名object
,然后使用ObjectMapper中的toString()
表示形式映射到Checkstyle
類,該類將永遠無法工作。 由於您已經將json字符串丟失到java對象的默認toString表示形式中: someObjectClassname@hashcodenumber
。
下面是一些常用的readValue
方法簽名來進行正確的反序列化:
readValue(InputStream in,類c)
readValue(Reader rd,Class c)
readValue(String json,Class c)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.