java如何使用Gson为多个JSON对象编写TypeAdapter?
我有一个包含多个嵌套JSON对象的JSON提要。我已经编写了我的POJO类,并在这里研究了如何反序列化嵌套的JSON对象以访问我需要的数据。但是,我仍然在我的嵌套JSON对象上接收NullPointerException
s:
JSON提要示例
{
"data": [
{
"relationships": {
"dismissals": {
"meta": {
"count": {
"home": 0,
"away": 0
}
},
"data": []
},
"home": {
"data": {
"type": "teams",
"id": "2"
}
}
}
}
]
}
Pojo映射
关系:
public class Relationships implements Serializable
@SerializedName("region")
@Expose
private Region region;
@SerializedName("competition")
@Expose
private Competition competition;
getters and setters
}
地区:
public class Region implements Serializable
{
@SerializedName("data")
@Expose
private Data data;
}
数据
public class Data implements Serializable, Parcelable
{
@SerializedName("type")
@Expose
private String type;
@SerializedName("id")
@Expose
private String id;
}
我的TypeAdapter
public class ItemTypeDataFactory implements TypeAdapterFactory {
public <T> TypeAdapter<T> create(Gson gson, final TypeToken<T> type) {
final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type);
final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
return new TypeAdapter<T>() {
public void write(JsonWriter out, T value) throws IOException {
delegate.write(out, value);
}
public T read(JsonReader in) throws IOException {
JsonElement jsonElement = elementAdapter.read(in);
if (jsonElement.isJsonObject()) {
JsonObject jsonObject = jsonElement.getAsJsonObject();
}
return delegate.fromJsonTree(jsonElement);
}
}.nullSafe();
}}
改装建造商:
Gson gson = new GsonBuilder()
.registerTypeAdapterFactory(new ItemTypeDataFactory()) // This is the important line ;)
.setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'")
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
RequestInterface request = retrofit.create(RequestInterface.class);
例如,我想得到:
getRelationships().getDissmissals().Meta().Count().Home();
当我运行我的应用程序时,我得到了NullPointerException
我是否需要向我的类型适配器中添加一些东西来反序列化类,以便在多个嵌套的JSON对象中获取数据?我已经试着在这里观看了,但没有任何效果
# 1 楼答案
有时很难为JSON响应生成POJO类。 您可以在这里轻松生成POJO http://www.jsonschema2pojo.org/