2012-04-14 361 views
0

我有一個gson反序列化的問題。 傳入的json看起來像這樣{"roles":{"name":"bla" "perm" : "bla"}}或者當有更多角色可用時,它看起來像這樣 {"roles":[{"name":"bla" "perm" : "bla"}{"name":"hihi" "perm" : "hihi"}]}。所以第一次參數角色是一個對象,第二次是一個對象數組。GSON:預計BEGIN_ARRAY,但是BEGIN_OBJECT

當我的java類有字段Role []角色時發生問題;並在json參數角色只是一個對象異常拋出「預計BEGIN_ARRAY但是BEGIN_OBJECT」。

謝謝你的問候

回答

1

這是一個有點bogous情況 - 你可以想到的是,庫將妥善處理兩個不同的模式在同一時間JSON。然而,當我的客戶使用GSON來使用這些服務時,我遇到了類似的問題,但他們是使用Jersey配置的。

添加傑克遜以及正確的配置使得我的服務始終是一個數組,它是問題的實際解決方案。有關如何修復服務的說明,請參閱this thread

+0

感謝您的留言。問題是我沒有訪問此應用程序的服務器端:(。 – malinjir 2012-04-14 10:59:01

+1

嗯,也許切換到使用Jacksoon而不是GSON然後?所有這些庫聲明這種不一致的數組處理後,所以他們應該至少能夠處理他們自己的輸出。 – 2012-04-14 11:03:56

1

您可以使用您自己的TypeAdapter來處理單個實例情況,將其反序列化,然後轉換爲數組並將其設置在字段中,使其一致。

相關問題