我有一个api,它会吐出以下JSON:
{
"monitors": [
[
"/Common/http-cc-ping-any"
]
],
"is_alive":true
}
我正在尝试使用spring和Jackson JSON Parser将JSON映射到POJO
POJO定义为:
public class MonitorsList {
@JsonProperty("monitors")
private List<Monitors> monitors;
public void setMonitors(List<Monitors> monitors) {
this.monitors = monitors;
}
public List<Monitors> getMonitors() {
return this.monitors;
}
private boolean is_alive;
public void setIsAlive(boolean is_alive) {
this.is_alive= is_alive;
}
public boolean getIsAlive() {
return this.is_alive;
}
}
我的Monitor POJO是:
@JsonAutoDetect
public class Monitors {
private ArrayList<String> monitors;
public ArrayList<String> getMonitors() {
return this.monitors;
}
public void setMonitors(ArrayList<String> monitors) {
this.monitors = monitors;
}
}
我正在使用RestTemplate来检索JSON数据,但是我收到以下错误:
错误:无法读取文档:无法从START_ARRAY标记中反序列化hello.Monitors的实例 在[来源:java.io.PushbackInputStream@2a2c13a8; line:1,column:14](通过引用链:hello.MonitorsList [“monitors”] - &gt; java.util.ArrayList [0]);嵌套异常是com.fasterxml.jackson.databind.JsonMappingException:无法从START_ARRAY令牌中反序列化hello.Monitors的实例 在[来源:java.io.PushbackInputStream@2a2c13a8; line:1,column:14](通过引用链:hello.MonitorsList [“monitors”] - &gt; java.util.ArrayList [0])
我似乎无法弄清楚我做错了什么。
任何帮助将不胜感激!
答案 0 :(得分:0)
感谢@SotiriosDelimanolis
并稍微阅读,我能够弄清楚我做错了什么。
所以,JacksonJSON Parser映射了
{
"monitors": [
[
"/Common/http-cc-ping-any"
]
],
"is_alive":true
}
如以下POJO:
public class MonitorsList {
@JsonProperty("monitors")
private List<Monitors> monitors;
public void setMonitors(List<Monitors> monitors) {
this.monitors = monitors;
}
public List<Monitors> getMonitors() {
return this.monitors;
}
@JsonProperty("is_alive")
private boolean is_alive;
public void setIsAlive(boolean is_alive) {
this.is_alive= is_alive;
}
public boolean getIsAlive() {
return this.is_alive;
}
}
监控POJO:
@JsonAutoDetect
public class Monitors extends ArrayList<String> {
}
注意 ,即is_alive未映射到setIsAlive
,因此将注释@JsonProperty("is_alive")
提供给字段is_alive
或方法setIsAlive
将起作用!