首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Jackson JSON解析器中解析数组JSON

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

Stack Overflow用户
提问于 2015-12-23 01:57:23
回答 1查看 432关注 0票数 0

我有一个api,它释放出以下JSON:

代码语言:javascript
复制
{
    "monitors": [
        [
            "/Common/http-cc-ping-any"
        ]
    ],
    "is_alive":true
}

我试图使用spring和Jackson JSON Parser将JSON映射到POJO

POJO定义为:

代码语言:javascript
复制
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;
    }
}

我的监视器POJO是:

代码语言:javascript
复制
@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.Monitors令牌中反序列化START_ARRAY令牌的实例;嵌套的异常是java.util.ArrayList[0]">Source: java.io.PushbackInputStream@2a2c13a8; line: 1, column: 14不能从java.util.ArrayList[0]">Source: java.io.PushbackInputStream@2a2c13a8; line: 1, column: 14的START_ARRAY令牌中反序列化hello.Monitors的实例

我似乎不知道我做错了什么。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-23 05:27:38

多亏了@SotiriosDelimanolis和一些阅读,我才能弄清楚自己做错了什么。

因此,JacksonJSON解析器映射一个

代码语言:javascript
复制
{
    "monitors": [
        [
            "/Common/http-cc-ping-any"
        ]
    ],
    "is_alive":true
}

作为以下POJO:

代码语言:javascript
复制
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为:

代码语言:javascript
复制
@JsonAutoDetect
public class Monitors extends ArrayList<String> {
}

注意到 is_alive没有映射到setIsAlive,所以向字段is_alive或方法setIsAlive提供注释@JsonProperty("is_alive")都可以!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34427407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档