簡體   English   中英

將字符串轉換為gson對象

[英]converting string to gson object

我有一個從服務器輸出的字符串,我試圖從字符串中提取一些值。

這是服務器的輸出:

jsonString =

{
  "MEANING":"reduce",
  "DISPLAY":"",
  "TYPE_CD":1,
  "SELECTED_IND":1,
  "CNT":1,
  "SOURCES":[
              { "a":1 }
            ]
}

碼:

JsonReader reader = new JsonReader(new StringReader(jsonString));
DataObject obj1 = new Gson().fromJson(reader, DataObject.class);

DataObject類別:

DataObject
{ 
    private int MEANING;
    private int CNT;
    private String TYPE_CD;
    private String DISPLAY;
    private String MEANING;
    private List<Long> SOURCES;

    public String getSourceTypeMeaning()
     {
       return this.MEANING;
     }

    public String getSourceTypeDisplay() 
     {
       return this.DISPLAY;
     }

    public String getSourceTypeCd() 
     {
       return this.TYPE_CD;
     }

    public int getSourceCount() 
     {
       return this.CNT;
     }

    public List<Long> getSourceList() 
     {
       return this.SOURCES;
     }
}

但是得到這個錯誤

Expected a string but was BEGIN_OBJECT at line 1 column 132

我的代碼找不到問題。

其他答案指出問題出在SOURCES字段中,這是事實,但是他們提供的解決方案不正確...

您不能僅使用Map來解析SOURCES字段,因為該字段的確是數組 你有:

"SOURCES": [ ... ]

因為有方括號[ ] ,所以有數組! 確實有一個Map ,但是它包含在數組中...

因此,您需要正確解析該字段是:

private List<Map<String, int>> SOURCES;

請注意,我們使用Map來允許SOURCES的內容具有多個未知值,以便此代碼不僅可以解析您的JSON, 可以解析以下內容:

"SOURCES":[
              { "a":1, "b":2 },
              { "c":3 },
              { "x":99, "y":98, "z":97 }
          ]

SOURCES變量應該為Map<String,Long> ,因為在JSON字符串中SOURCES是鍵值集合("a":1) ,其中“ a”是字符串,1是數字。

希望這可以幫助。

檢查一下

"SOURCES":[
              { "a":1 }
 ]

這將代表地圖列表而不是長列表。

因此將List<long>更改為List<Map<String, Long>>List<Map<Object, Long>>

暫無
暫無

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

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