2015-12-22 26 views
0

我在這個格式的JSON字符串:JSON字符串到Java對象GSON

[ 
    { 
    "key1": { "key1":"val1","key2":"val2" }, 
    "key2": { "key1":"val1","key2":"val2" } 
    } 
] 

解析它,我創建一個Java類:

class data { 
    String key; 
    List <content> listdata; 
    /* getter and setter for the attribute above */ 
    ... 
    } 

現在我跟着GSON文件,並嘗試exract data:

Gson gson =new Gson(); 
data[] ints = gson.fromJson(MyjsonString, data[].class); 

我從Gson API得到解析錯誤,我做錯了什麼?

java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 1 path 
+0

您確定,您的數據不應該是這樣嗎? '['key1':'val1','key2':'val2']},{ 「key」:[「key1」:「val1」,「key2」:「val2」] }]' –

+0

沒有它像我上面提到的 – Lhoussaine

回答

1

爲了解析json像下面的類

class data { 
String key; 
List <content> listdata; 
/* getter and setter for the attribute above */ 
... 
} 

你需要一個json類似如下

"data" : { 
"key": "value", 
"listdata": [{ content object key attributes here }] 
} 

至於你的異常清晰地說:BEGIN_ARRAY but was STRING所以你必須使用數組中json解析。

在如果你想有一個類的評論

的答覆在解析以下JSON

{ 
"key1": { "key1":"val1","key2":"val2" }, 
"key2": { "key1":"val1","key2":"val2" } 
} 

然後,你將不得不類結構如下

class Data { 
Map<String, String> key1; 
Map<String, String> key2; 
/* getter and setter for the attribute above */ 
} 
+0

謝謝你的答案,我知道我必須改變我的班級結構,但是,你能建議我一個新的嗎? – Lhoussaine

+0

我不能這樣改變我的Json字符串,但我可以更改我的Java類以滿足要求。 – Lhoussaine

+0

我已更新答案plz看看它是否會幫助你! –

0

按JSON的,此類結構的工作原理如下:

class data { 
List <Map<String,Content> data; 
/* getter and setter for the attribute above */ 
... 

}

+0

我會測試這個 – Lhoussaine

+0

COM .google.gson.stream.MalformedJsonException:期望':'在第1行第9列路徑 – Lhoussaine

+0

json有些問題,請檢查您的json,您可以使用jsonlint.com – Sandeep