使用空字符串反序列化json作为意外的第一个元素

时间:2015-12-29 06:33:36

标签: android json gson retrofit

在Android项目中,使用Retrofit2和GsonConverterFactory,我无法反序列化一些不规则但看似有效的json。我希望从API响应中得到以下内容:

[
  {
    "0": "someCode",
    "1": "some description",
    "Activitycode": "someCode",
    "description": "some description"
  },
  {
    "0": "someCode2",
    "1": "some description2",
    "Activitycode": "someCode2",
    "description": "some description2"
  },
  ...

我得到了这个(注意空字符串作为第一个元素):

[
  "",
  {
    "0": "someCode",
    "1": "some description",
    "Activitycode": "someCode",
    "description": "some description"
  },
  {
    "0": "someCode2",
    "1": "some description2",
    "Activitycode": "someCode2",
    "description": "some description2"
  },
  ...

这个json通过验证,但我通常会将它反序​​列化为这样的pojo:

public class ActivityCode {

    @SerializedName("0")
    @Expose
    private String _0;

    @SerializedName("1")
    @Expose
    private String _1;

    @SerializedName("Activitycode")
    @Expose
    private String Activitycode;

    @SerializedName("description")
    @Expose
    private String description;

    ...
}

由于显而易见的原因,我得到了可怕的com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at...例外。

我的电话很简单:

@FormUrlEncoded
@POST
Call<List<ActivityCode>> getActivityCodes(@Url String url,
                                          @Field("cmd") String cmd,
                                          ...

然后我使用call.enqueue(new Callback<List<ActivityCode>>() ...执行

我已经完成了一些研究但是如何处理这个空字符串,我只想要一个ActivityCode对象列表......

修改

这个json在我能找到的每个验证器中都通过验证,但是jsonschema2pojo.org无法从中生成代码。

0 个答案:

没有答案