gpt4 book ai didi

java - 将注释插入 Jackson 的 Retrofit 请求中

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:40 24 4
gpt4 key购买 nike

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

关于java - 将注释插入 Jackson 的 Retrofit 请求中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38108572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com