在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无法从中生成代码。