在嵌套json

时间:2015-11-17 14:33:21

标签: android json serialization gson retrofit

我有这个json(它比这复杂得多) 问题是“past_ings”属性可能是对象或对象数组。

query: {
  count: 2,
  created: "2015-11-17T11:44:06Z",
  lang: "en-US",
  results: {
    Scorecard: [
       {
          past_ings: {
             s: {},
             d: {}
          }
       }
     ]
   }
 }

query: {
  count: 2,
  created: "2015-11-17T11:44:06Z",
  lang: "en-US",
  results: {
    Scorecard: [
       {
          past_ings: [
             {
                s: {},
                d: {}
             },
             {
                s: {}
             }
           ]
        }
     ]
   }
 }

我使用retrofit和gson,通过使用@SerializedName创建POJO但它不起作用“part_ings”。

我的问题是我可以使用TypeAdapter来序列化一个属性“past_ings”并让默认Gson序列化其余属性吗?因为对所有传入的对象使用TypeAdapter太复杂了。

编辑:我将past_ings定义如下

@Expose
@SerializedName("past_ings")
private List<PastIngs> pastIngses;

我收到此错误com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2241 path $.query.results.Scorecard[0].past_ings

1 个答案:

答案 0 :(得分:0)

为什么不在数组中放一个值并序列化呢? 您的past_ings可能是一个对象数组或一个对象。因此,创建ArrayList并将您需要的所有内容放入past_ings。如果有一个值,则ArrayList将使用一个对象序列化为JSONArray