我正在Android应用程序中使用Retrofit 2.1和Jackson,以对使用Jackson进行反序列化的服务进行后期处理。该服务期望传入的json看起来像:
{"@class":"com.servicepackagepath$OurClassName","prop1":"value1","prop2":"value2"}
但是正在生成并发送到服务的json是:
{"prop1":"value1","prop2":"value2"}
结果为500。翻新签名如下:
@POST("apiName")
Call<String> apiName(@Body OurClassName ourClassName);
客户端上的OurClassName类与服务上的类不同。完全相同的签名,但是是本地的。
如何获取该@class注释以插入到传出的json中?
最佳答案
好,知道了。您需要添加到Retrofit Builder:
.addConverterFactory(JacksonConverterFactory.create(
new ObjectMapper().enableDefaultTyping(ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT, JsonTypeInfo.As.PROPERTY)
))
然后在类声明的顶部执行以下操作:
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include= JsonTypeInfo.As.PROPERTY, property="@class")