当前位置: 首页 > 知识库问答 >
问题:

用复杂的JSON修改POST请求

闾丘德业
2023-03-14

我是改造的新手,并试图使用改造提出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
        }
      }
    }

我将接口定义为

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

我不确定我的用户类应该是什么样子,我希望有效载荷和上面提到的一样,到目前为止我的用户类是

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类进行改造调用。服务器响应与上面提到的JSON请求完全相同,只有1个附加字段,即用户ID。我已经准备好了POJO类来获得响应。

我对如何发出POST请求感到困惑。提前感谢您的帮助。

共有2个答案

穆飞龙
2023-03-14

使用GSON,无论您将这些类设为顶级还是内部类都没有区别,它在两种情况下都可以正常工作。您的代码看起来不错,应该可以正常工作。

程墨竹
2023-03-14

序列化时的 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;
}

并在使用改造执行请求时使用它:

@POST("/users")
void registerUser(@Body UserRequest User, Callback<User> cb);
 类似资料:
  • 我需要执行修改后的请求,但我有一个问题,我不能很好地理解。在尝试使用代码之前,我用Postman和request测试了api调用,如下所示: 下面是我的android代码: 编辑请求: null

  • 问题内容: 我想写一个可以打印和修改不规则csv文件的程序。格式如下: 例如,数据可以如下所示: 我是一个初学者,但是我没有在网上找到任何可行的资源来解决此类问题。我主要关心的是,我们如何遍历循环并确定俱乐部的日期和名称,并将其输入数组?请指教。 问题答案: 我认为这应该对您有所帮助。基本上,您的CSV杂乱无章。下面是我安排您的csv的代码 这是您将为此获得的输出 我正在从csv.txt中读取文件

  • 我有一个对象,作为另一个GET请求的响应接收它<代码>jsonElement。toString() 看起来像JSON数组: 我需要通过另一个使用改装的POST请求发送此字符串。如何通过POST请求发送jsonElement或String对象?我的方法声明应该怎么看?例如:

  • 通过HttpUrlConnection在服务器上注册用户数据的Post请求 在android中通过http post方法发送json对象 如何用Android通过请求发送JSON对象?