How to ignore some variables in models using for retrofit
我正在使用改型向我的服务器发送和接收请求。
我有一个像下面这样的模型,我必须将它发送到我的服务器,但是这个模型中的一些变量不能发送到服务器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class SelectedListModel implements Serializable { @SerializedName("p_id") @Expose private Long pId; @SerializedName("p_qty") @Expose private Double pQty; @Expose(serialize = false , deserialize = false) private String pName; //Have not to send to server @Expose(serialize = false , deserialize = false) private String pPrice; //Have not to send to server @Expose(serialize = false , deserialize = false) private String pImageUrl; //Have not to send to server } |
正因为如此,我从服务器得到了400条响应。我使用
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class SelectedListModel implements Serializable { @SerializedName("p_id") @Expose private Long pId; @SerializedName("p_qty") @Expose private Double pQty; //@Expose(serialize = false , deserialize = false) private transient String pName; //Have not to send to server //@Expose(serialize = false , deserialize = false) private transient String pPrice; //Have not to send to server //@Expose(serialize = false , deserialize = false) private transient String pImageUrl; //Have not to send to server } |
号
不需要在需要排除的字段中使用
读Java为什么有瞬态字段?为什么在Java中使用"瞬态"关键字?了解更多详细信息。
像这样更改您的改装适配器代码(我希望您使用的是Revfit2)
1 2 3 4 5 6 7 8 | Gson gson = new GsonBuilder() .excludeFieldsWithoutExposeAnnotation() .create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create(gson)) .build(); |