我正在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")

10-04 19:17