2015-11-07 118 views
-3

我們有Json,我們試圖解析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) 
+0

這是什麼意思:'CustomJSON.class'? –

回答

1

按照模型,變化來自

的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是字符串,但使用的是{文字將其視爲對象。刪除它併爲其分配字符串值。同時刪除時一定要刪除相應的文字。