Android Retrotfit在接收后修改对象的字段
在内部存储之前,我需要修改使用改装从服务器接收的对象的某些字段: 例如,服务器对象模型Android Retrotfit在接收后修改对象的字段,android,retrofit,retrofit2,gson,Android,Retrofit,Retrofit2,Gson,在内部存储之前,我需要修改使用改装从服务器接收的对象的某些字段: 例如,服务器对象模型 { "field1":boolean; "field2":String } 应用程序对象模型: { "field1":int=boolean?1:0; "field2":my prefix + String; } 我应该编写自己的解析器吗?或者在本地存储对象之前,使用GSON进行解析就足够了吗?为什么不在反序列化发生后更改它们?现在还不清楚你想做什么,但这里有一个解决方案
{
"field1":boolean;
"field2":String
}
应用程序对象模型:
{
"field1":int=boolean?1:0;
"field2":my prefix + String;
}
我应该编写自己的解析器吗?或者在本地存储对象之前,使用GSON进行解析就足够了吗?为什么不在反序列化发生后更改它们?现在还不清楚你想做什么,但这里有一个解决方案 (1) 编写反序列化程序
public class MyDeserializer implements JsonDeserializer<MyModel> {
...
}
(3) 将其添加到改装中
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(...)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
或者,您可以在获取实例后更改字段的内容。为什么不在反序列化发生后更改它们?现在还不清楚你想做什么,但这里有一个解决方案 (1) 编写反序列化程序
public class MyDeserializer implements JsonDeserializer<MyModel> {
...
}
(3) 将其添加到改装中
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(...)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
或者,您可以在获得实例后更改字段的内容。使用GSON,您可以编写自己的JsonDeserializer。 此示例显示如何将JSON中的int转换为对象中的boolean
public class BooleanTypeAdapter implements JsonDeserializer<Boolean> {
@Override
public Boolean deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
int code = json.getAsInt();
return code != 0;
}
}
希望有帮助。使用GSON,您可以编写自己的JsonDeserializer。 此示例显示如何将JSON中的int转换为对象中的boolean
public class BooleanTypeAdapter implements JsonDeserializer<Boolean> {
@Override
public Boolean deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
int code = json.getAsInt();
return code != 0;
}
}
希望有帮助。@shadox的答案是正确的。在onResponse方法上接收模型之前,请使用JsonDeserializer附加任何字符串或执行任何操作。请标记其中一个答案。@shadox答案正确。在onResponse方法上接收模型之前,请使用JsonDeserializer附加任何字符串或执行任何操作。请标记其中一个答案。