簡體   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