簡體   English   中英

使用gson反序列化json

[英]Deserializing json using gson

我在反序列化以下json時遇到問題:

{
   "17":"asdf",
   "18":"fdsa",
   "19":"gfds",
   "34":"vcxz",
   "35":"oiue",
   "36":"oiuy"
}

至:

public class CategoryList {

    List<Category> list;
}

public class Category {

    String id;
    String name;
}

我收到以下IllegalStateException

Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2

請告訴我我在哪里犯錯。

該錯誤是不言自明的,解串器期望使用JSON數組,因為您的類包含List

嘗試以下JSON:

{
    "list": [
        {
            "id": "17",
            "name": "asdf"
        }
    ]
}

應該正確序列化

以下json

{
   "17":"asdf",
   "18":"fdsa",
   ...
}

是JSON對象,而不是數組。 您的類(Category和CategoryList)應使用以下json:

{
    list: [
        {id: 17, name: "asdf"},
        {id: 18, name: "fdsa"},
        ....
    ]
}

更改您的json或類。

編輯:問題是(如果我理解您的示例)您的json對象具有可變數量的字段。 這意味着您必須使用諸如hashmap之類的東西而不是您的類。 嘗試將您的json反序列化為

Map<int, String>

您可以在以下答案中找到一些幫助: https : //stackoverflow.com/a/8103092/2880555 (您將被重定向到此鏈接http://programmerbruce.blogspot.com/2011/06/gson-v-jackson。 html,並在該頁面中搜索“將任何JSON對象轉換為Map的Gson代碼”。

暫無
暫無

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

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