繁体   English   中英

我如何在Jackson JSON解析器中解析JSON数组

[英]How do I parse an array of array JSON in Jackson JSON parser

我有一个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数据,但出现以下错误:

错误:无法读取文档:无法反序列化hello.Monitor的序列,它们位于START_ARRAY令牌之外,位于[来源:java.io.PushbackInputStream@2a2c13a8; 行:1,列:14](通过参考链:hello.MonitorsList [“ monitors]]-> java.util.ArrayList [0]); 嵌套的异常是com.fasterxml.jackson.databind.JsonMappingException:无法反序列化hello的实例。监视器不在START_ARRAY令牌中,位于[来源:java.io.PushbackInputStream@2a2c13a8; 行:1,列:14](通过参考链:hello.MonitorsList [“ monitors”]-> java.util.ArrayList [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 ,因此为字段is_alive或方法setIsAlive提供注释@JsonProperty("is_alive")即可!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM