我有两个外部模型相同的API,所以我为外部模型(ResponseModel)和结果键创建了一个模型类,我为结果键创建了一个名为ResultModel的类,所以我可能能够编写结果键上可能出现的所有响应
@JsonIgnoreProperties(ignoreUnknown = true)
public class ResponseModel {
@JsonProperty("code")
private Integer code;
@JsonProperty("message")
private String message;
@JsonProperty("result")
private List<ResultModel> result;
}
在这里,我添加了ResultModel结果键中可能的响应,将给出国家列表或州列表
@JsonIgnoreProperties(ignoreUnknown = true)
public class ResultModel {
private Country country;
private State state;
}
CountryList API 1结果
{
"code" :102
"message" : "message string"
"result" : [
{ "id" : 1, "name": "hello" },
{ "id" : 2, "name": "world" }]
}
状态列表API 2结果
{
"code" :101
"message" : "message test"
"result" : [
{ "id" : 1, "name": "hello", "code" :1001 },
{ "id" : 2, "name": "world", "code" :1002 }]
}
我遵循这个结构来重用外部模型。但它不起作用
不管怎样,都可以重用ResponseModel,而不必为国家和州创建每个类。
你需要的是低级建筑。。
data class WebResponse<T>(
val code: Int,
val message: String,
val result: List<T>
) {}
给你的服务打电话
@GET("/countryList")
fun getCountries(): Call<WebResponse<CountryEntity>>
@GET("/stateList")
fun getStateList(): Call<WebResponse<StateEntitiy>>
您的实现的问题是,您正在以错误的方式构建对象,对于当前的类,您正在等待这样的json:
{
"code" :102
"message" : "message string"
"result" : [
{
"country" : { "id" : 1, "name": "hello" },
"state" : { "id" : 2, "name": "world", "code" :1002 }
}
]
}
一个更好的选择,是像这样使用泛型:
@JsonIgnoreProperties(ignoreUnknown = true)
public class ResponseModel<T> {
@JsonProperty("code")
private Integer code;
@JsonProperty("message")
private String message;
@JsonProperty("result")
private List<T> result;
}
然后,您可以在实现中指定要查看的对象类型:
ResponseModel<Country>
ResponseModel<State>
并且不再需要类ResultModel。
3. 我不想在我的API中传递所有的参数作为请求体,有些只有查询、变量、输入有些只有查询和变量,就像上面的json数据,我想创建相同的模型,可以在其余的API中使用。目前,我已经为每个API创建了不同的模型。 公共类CreatetRequest{ } 这里我在所有API中复制了我的模型,所以我想创建三个模型类,其中包含所有必需的变量,这些变量在我的引导应用程序中都是常见的,但同时我必须避免在res
因此,我正在创建一个用户API,并尝试在登录前调用getUserByEmail()。我的问题是,我得到了一个不明确的处理程序方法映射为HTTP路径错误。 我知道我的问题与我有一个相同但参数类型不同的GET有关。任何帮助都将不胜感激!
以下是GSON的例外: 改型实例是使用GsonConverterFactory创建的
我已经使用登录API在Jmeter中进行了测试。 为此,我通过了以下请求: 帖子网址:......POST数据参数:"电子邮件地址":"a@gmail.com","密码":"ad332017" 对于上述要求,我得到两种不同的答复。 邮递员:我收到回复,状态代码200 OK(这也是预期的) 在Jmeter上,我得到响应:响应代码:307响应消息:临时重定向。 谁能帮我解决这个问题?
我需要编写一个java方法来从一个对象中获取特定的信息。但是,该对象可以是A类型的,也可以是B类型的。下面是我的代码的一部分: 当我这样写它时,它会引发一个错误,说“重复方法”。我怎么才能让这个起作用?
是否可能有多个方法具有相同的名称,但采用不同的列表类型。这当然可以通过定期重写来实现,但java无法区分两种不同的列表类型。除了有不同的名字,还有别的办法吗?例如: 如果我们有 在同一个班级。