簡體   English   中英

將 JSON 解析為對象時出錯

[英]Error while Parsing JSON to Object

我們有 Json,我們試圖將 json 解析為對象,但我們得到了下面解釋的異常代碼。

   {
    "ResultSet": {
        "Query": "Peabody",
        "Result": [
            {
                "symbol": "BTU",
                "name": "Peabody Energy Corporation",
                "exch": "NYQ",
                "type": "S",
                "exchDisp": "NYSE",
                "typeDisp": "Equity"
            },
            {
                "symbol": "BTU.MX",
                "name": "Peabody Energy Corporation",
                "exch": "MEX",
                "type": "S",
                "exchDisp": "Mexico",
                "typeDisp": "Equity"
            },
            {
                "symbol": "PE5.MU",
                "name": "PEABODY ENERGY",
                "exch": "MUN",
                "type": "S",
                "exchDisp": "Munich",
                "typeDisp": "Equity"
            },
            {
                "symbol": "PE5.F",
                "name": "PEABODY ENERGY",
                "exch": "FRA",
                "type": "S",
                "exchDisp": "Frankfurt",
                "typeDisp": "Equity"
            },
            {
                "symbol": "PE5.DU",
                "name": "PEABODY ENERGY",
                "exch": "DUS",
                "type": "S",
                "exchDisp": "Dusseldorf Stock Exchange",
                "typeDisp": "Equity"
            },
            {
                "symbol": "PE5.SG",
                "name": "PEABODY ENERGY",
                "exch": "STU",
                "type": "S",
                "exchDisp": "Stuttgart",
                "typeDisp": "Equity"
            },
            {
                "symbol": "PE51.F",
                "name": "PEABODY ENERGY",
                "exch": "FRA",
                "type": "S",
                "exchDisp": "Frankfurt",
                "typeDisp": "Equity"
            },
            {
                "symbol": "PE51.DU",
                "name": "PEABODY ENERGY",
                "exch": "DUS",
                "type": "S",
                "exchDisp": "Dusseldorf Stock Exchange",
                "typeDisp": "Equity"
            },
            {
                "symbol": "PE51.MU",
                "name": "PEABODY ENERGY",
                "exch": "MUN",
                "type": "S",
                "exchDisp": "Munich",
                "typeDisp": "Equity"
            },
            {
                "symbol": "PE51.SG",
                "name": "PEABODY ENERGY",
                "exch": "STU",
                "type": "S",
                "exchDisp": "Stuttgart",
                "typeDisp": "Equity"
            }
        ]
    }
}

我們有課程:-

class CustomJSON {
    private String ResultSet;
    private String Query;
    private List<Result> Result = new ArrayList<Result>();
    public String getResultSet() {
        return ResultSet;
    }
    public void setResultSet(String resultSet) {
        ResultSet = resultSet;
    }
    public String getQuery() {
        return Query;
    }
    public void setQuery(String query) {
        Query = query;
    }
    public List<Result> getResult() {
        return Result;
    }
    public void setResult(List<Result> result) {
        Result = result;
    }


}

class Result{

    private String symbol;
    private String name;
    private String exch;
    private String type;
    private String exchDisp;
    private String typeDisp;
    public String getSymbol() {
        return symbol;
    }
    public void setSymbol(String symbol) {
        this.symbol = symbol;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getExch() {
        return exch;
    }
    public void setExch(String exch) {
        this.exch = exch;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getExchDisp() {
        return exchDisp;
    }
    public void setExchDisp(String exchDisp) {
        this.exchDisp = exchDisp;
    }
    public String getTypeDisp() {
        return typeDisp;
    }
    public void setTypeDisp(String typeDisp) {
        this.typeDisp = typeDisp;
    }
}

測試:-

    CustomJSON customJSON = new  Gson().fromJson(result,CustomJSON.class);

但我們得到了例外:-

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 15
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176)
    at com.google.gson.Gson.fromJson(Gson.java:803)
    at com.google.gson.Gson.fromJson(Gson.java:768)
    at com.google.gson.Gson.fromJson(Gson.java:717)
    at com.google.gson.Gson.fromJson(Gson.java:689)

根據模型,將json字符串從

{
"ResultSet": {
    "Query": "Peabody",
    "Result": [
        {
            "symbol": "BTU",
            "name": "Peabody Energy Corporation",
            "exch": "NYQ",
            "type": "S",
            "exchDisp": "NYSE",
            "typeDisp": "Equity"
        },

{
"ResultSet": "someResultSetString",        //<-- this should be string
    "Query": "Peabody",
    "Result": [
        {
            "symbol": "BTU",
            "name": "Peabody Energy Corporation",
            "exch": "NYQ",
            "type": "S",
            "exchDisp": "NYSE",
            "typeDisp": "Equity"
        },

ResultSet 是字符串,但您使用{文字將其視為對象。 刪除它並為其分配字符串值。 此外,在刪除時,請確保刪除相應的}文字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM