gpt4 book ai didi

java - 如何使用改造在 post 请求中发送多个 json 对象?

转载 作者:行者123 更新时间:2023-11-30 08:49:03 26 4
gpt4 key购买 nike

我有这个键值对的 json 对象,需要使用改造在 post 请求中发送

{
"Criteria":{
"DisciplineId":0,
"SeasonId":0,
"Leagues":[

],
"StartDate":"06 Sep 2013",
"EndDate":"14 Dec 2013",
"RoundId":0,
"GroupId":0,
"MatchesScores":3
},
"SearchInfo":{
"PageNumber":1,
"PageSize":20,
"Sort":1,
"TotalRecords":542
}
}

我正在考虑创建一个与 json 对象的 gson 定义相匹配的 POJO,然后使用 POJO 类中的 setter 来设置每个键值对的值。

所以我会有这样的东西

@FormUrlEncoded
@POST("/getMatches")
void getMatches(@Field("Criteria") Criteria criteria,@Field("SearchInfo") SearchInfo searchInfo, Callback<JSONKeys> keys);

我走在正确的轨道上吗?

看到 json 对象中有两个嵌套的 json 对象以及一个包含这些对象之一的 json 数组,我该如何实现这一点?

最佳答案

您可以创建一个包含这两者的请求类。只要成员变量的名称与 json 匹配(或者您使用 SerializedName ),转换就会自动发生。

class MyRequest{
@SerializedName("Criteria") Criteria criteria;
@SerializedName("SearchInfo") SearchInfo searchInfo;
}

Criteria 是:

class Criteria {
@SerializedName("DisciplineId") int disciplineId;
@SerializedName("SeasonId") int seasonId;
@SerializedName("Leagues") List<Integer> leagues; // Change Integer to datatype
@SerializedName("StartDate") String startDate;
@SerializedName("EndDate") String endDate;
@SerializedName("RoundId") int roundId;
@SerializedName("GroupId") int groupId;
@SerializedName("MatchesScores") int matchesScores;
}

SearchInfo 是:

class SearchInfo{
@SerializedName("PageNumber") int pageNumber;
@SerializedName("PageSize") int pageSize;
@SerializedName("Sort") int sort;
@SerializedName("TotalRecords") int totalRecords;
}

要使用 try(请参阅 here):

@POST("/getMatches")
public void getMatches(@Body MyRequest request, Callback<Boolean> success);

Retrofit 在内部使用 Gson 并将自动将您的 MyRequest 对象转换为您在问题中描述的 json 格式。


注意: 通常约定将 json 键命名为带下划线的小写字母,将 java 命名为驼峰命名法。然后在创建 gson 对象时设置 key 命名约定,而不是到处使用 SerializedName(请参阅 here):

Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create()

关于java - 如何使用改造在 post 请求中发送多个 json 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31633526/

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