使用GSON的JSON对象/数组到Java对象

时间:2018-01-10 13:02:39

标签: java json gson

我从GET响应中收到以下JSON结构:

[
   {
      "type":"unico",
      "line_items":{
         "meta_data":[
            {
               "id":"1",
               "key":"abc"
            },
            {
               "id":"2",
               "key":"cba"
            }
         ]
      }
   },
   {
      "type":"assinatura",
      "line_items":{
         "meta_data":{
            "4":{
               "id":"1",
               "key":"123"
            },
            "5":{
               "id":"2",
               "key":"321"
            }
         }
      }
   }
]

根据结构, meta_data 对象可以定义为对象列表和对象数组,具体取决于类型

我在LineItem.java类中使用以下定义:

@SerializedName("meta_data")
@Expose
private MetaData metaData;

参加"type":"assinatura"类型。

使用GSON将JSON字符串解析为Java对象时,我收到错误:

  

java.lang.IllegalStateException:预期BEGIN_OBJECT但是   BEGIN_ARRAY在第1行第607行路径$ [0] .line_items [0] .meta_data

有没有办法让我的Java类处理这两种情况?从我的位置来看,我无法改变JSON结构。

1 个答案:

答案 0 :(得分:0)

使用此JsonToPojo转换器。它非常方便,它将根据您的Json响应创建Pojo类。