我的服务遇到了一个问题,因为同一个字段在请求和响应中的形式不同,因此我使用@Expose
注解来序列化一个字段并反序列化另一个字段:
@SerializedName("photo")
@Expose(deserialize = false)
private String imageB64;
@SerializedName("photo")
@Expose(serialize = false)
private ImageURL imageURL;
但在响应中,我的服务却发起了一个异常:
Caused by: java.lang.IllegalArgumentException: class User declares multiple JSON fields named photo
我正在使用带有GSON转换器的Retrofit。
谢谢你的帮助!
2条答案
按热度按时间nwsw7zdq1#
我认为不可能添加多个
@SerializedName
注解,因为否则您将得到您提供的错误。但是,您可以创建一个自定义的
TypeAdapter
来手动处理对象的序列化/反序列化,如下所示:我的对象
我的对象类型适配器
您可以按以下方式使用它:
并且它会打印(注意我使用了自定义的
toString()
作为MyObject
):jpfvwuh42#