gpt4 book ai didi

android - 使用复杂的 JSON 改造 POST 请求

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:07 25 4
gpt4 key购买 nike

我是 Retrofit 的新手,正在尝试使用 Retrofit 发出 POST 请求。我的 POST 请求有一个复杂的 JSON 正文,如下所示:

有效载荷:

{
"user": {
"personal_info": {
"first_name": "Walter",
"last_name": "White",
"date_of_birth": "1972-01-03 00:00:00 PST"
},
"address_info": {
"address_1": "308 NEGRA ARROYO LANE",
"address_2": "#",
"city": "ALBUQUERQUE",
"state": "NM",
"zip_code": "87104"
},
"contact_info": {
"email": "wwhite@test.com",
"telephone": "88888888888",
"telephone_type_id": 1
},
"employment_info": {
"employer_name": "SELF",
"employment_status_id": 7,
"annual_income": 9000000000000000,
"monthly_income": 750000000000,
"employment_start_year": 0,
"employment_start_month": 0
}
}
}

我将接口(interface)定义为

    @POST("/users")
void registerUser(@Body User User, Callback<User> cb);

我不确定我的 User 类应该是什么样子,我希望有效负载与上面提到的相同,到目前为止我的 User 类是

public class User {


@SerializedName("personal_info")
private PersonalInfo personalInfo;
@SerializedName("address_info")
private AddressInfo addressInfo;
@SerializedName("contact_info")
private ContactInfo contactInfo;
@SerializedName("employment_info")
private EmploymentInfo employmentInfo;

}

我不确定 Personalinfo、ContactInfo 等是否应该是包含 JSON 请求中提到的所有字段的单独类,或者我是否应该将它们作为 User 类中的内部类以及如何使用 User 类进行 Retrofit 调用。服务器响应与上面提到的 JSON 请求完全相似,带有 1 个附加字段,即用户 ID。我已准备好 POJO 类以获取响应。

我对如何发出 POST 请求感到困惑。在此先感谢您的帮助。

最佳答案

序列化后的 User 对象将具有以下 JSON 表示形式:

{
"personal_info": {
"first_name": "Walter",
"last_name": "White",
"date_of_birth": "1972-01-03 00:00:00 PST"
},
"address_info": {
"address_1": "308 NEGRA ARROYO LANE",
"address_2": "#",
"city": "ALBUQUERQUE",
"state": "NM",
"zip_code": "87104"
},
"contact_info": {
"email": "wwhite@test.com",
"telephone": "88888888888",
"telephone_type_id": 1
},
"employment_info": {
"employer_name": "SELF",
"employment_status_id": 7,
"annual_income": 9000000000000000,
"monthly_income": 750000000000,
"employment_start_year": 0,
"employment_start_month": 0
}
}

为了按照问题中的指示构建有效载荷,您需要另一个类:

public class UserRequest {

@SerializedName("user")
private User user;
}

并在使用 Retrofit 执行请求时使用它:

@POST("/users")
void registerUser(@Body UserRequest User, Callback<User> cb);

关于android - 使用复杂的 JSON 改造 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28924746/

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