[英]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.