gpt4 book ai didi

java - 如何使用 AutoValue 解析结构为对象数组的 JSON?

转载 作者:行者123 更新时间:2023-11-29 19:21:58 25 4
gpt4 key购买 nike

我有这个 JSON 正文:

[
{
"id": 0,
"field1": "10",
"field2": "22"
},
{
"id": 1,
"field1": "11",
"field2": "23"
}
]

我的pojoItem:

@AutoValue
public abstract class PojoItem{

@SerializedName("field1")
public abstract String field1();

@SerializedName("id")
public abstract int id();

@SerializedName("field2")
public abstract String field2();

}

还有我的pojoItemList:

@AutoValue
public abstract class PojoItemList{

public abstract List< PojoItem > itemList();

public static TypeAdapter<PojoItemList> typeAdapter(Gson gson) {
return new AutoValue_PojoItemList.GsonTypeAdapter(gson);
}
}

我有AutoValueGsonFactory:

@GsonTypeAdapterFactory
public abstract class AutoValueGsonFactory implements TypeAdapterFactory {

// Static factory method to access the package
// private generated implementation
public static TypeAdapterFactory create() {
return new AutoValueGson_AutoValueGsonFactory();
}
}

我正在使用 Retrofit 和 RxJava。我得到了这个异常(exception):

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY

如何设置我的 POJO 以将 JSON 作为对象数组而不是集合来读取?

最佳答案

问题是您为您的列表提供了一个名称 itemList,而响应中不存在该名称。

Retrofit 应该像这样工作:

public class Item {

@SerializedName("field1")
public String field1;

@SerializedName("id")
public int id;

@SerializedName("field2")
public String field2;

}

然后,当您定义 Retrofit 的接口(interface)时,使用如下内容:

@GET("/path")
Single<List<Item>> getItems();

关于java - 如何使用 AutoValue 解析结构为对象数组的 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42240399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com