首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将参数中带有@SerializedName的对象指定为url编码的POST请求中的@Field?

是否可以将参数中带有@SerializedName的对象指定为url编码的POST请求中的@Field?
EN

Stack Overflow用户
提问于 2020-09-24 21:05:21
回答 1查看 33关注 0票数 0

将我想要发送到API的以下JSON:

代码语言:javascript
复制
{
    "param1": "1",
    "param2": "2",
    "param3": {
        "param3-1": "3-1",
        "param3-2": "3-2"
    }
}

我的param3对象是:

代码语言:javascript
复制
data class param3Object(
    @SerializedName("param3-1") param3_1: String,
    @SerializedName("param3-2") param3_2: String
)

是否可以将上述对象传入API request @Field属性:

代码语言:javascript
复制
@FormUrlEncoded
@POST("api/something")
fun doSomething(
    @Field("param1") param1: String, 
    @Field("param2") param2: String,
    @Field("param3") param3: param3Object
): Call<MyResponse>

所以它在这篇文章的顶部代表了JSON?或者我需要以@Field的形式单独传递参数?我正在努力想办法不要浪费时间。

EN

回答 1

Stack Overflow用户

发布于 2020-09-24 21:16:58

您应该将其用作REQUEST BODY

代码语言:javascript
复制
@POST("api/something")
fun createUser(@Body data: Data) : Call<MyResponse>

并定义模型

代码语言:javascript
复制
data class Data(
    @SerializedName("param1") val param1: String,
    @SerializedName("param2") val param2: String,
    @SerializedName("param3") val param3: SubData
)

data class SubData(
    @SerializedName("param3-1") val param3_1: String,
    @SerializedName("param3-2") val param3_2: String
)

编辑

如果您确实希望将其作为formUrlEncoded发送,那么可能更简单解决方案是将parameter3更改为字符串,并在将数据放入方法之前序列化数据,或者更好的做法是将所有内容都更改为单个参数并序列化整个对象

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64047098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档