【发布时间】:2020-10-31 00:50:05
【问题描述】:
我正在处理我必须在 API 上实现的项目。此 API 响应是 ArrayList 的对象。你能帮我创建它的 POJO 类,如果可能的话,它的实现。我正在使用 Retrofit2 和 GSON。
如以下 JSON 架构所示,品牌名称将由管理员添加到 brandsonly 中,并将作为具有多个子对象的数组列表添加到 allorders 中。
例如,如果管理员在brandsonly 中添加Redmi,那么它将在allorders 中创建Redmi[]
{
"status": "success",
"brandsonly": [
{
"_id": "",
"brandname": "SAMSUNG",
},
{
"_id": "",
"brandname": "VIVO",
},
{
"_id": "",
"brandname": "NOKIA"
},
{
"_id": "",
"brandname": "IPHONE",
}
],
"allorders": {
"SAMSUNG": [],
"VIVO": [],
"NOKIA": [],
"IPHONE": [
{
"_id": "",
"order_id": "",
"__v": 0,
"adminconfirmation": 1,
"finalpricetodeduct": 30950
},
{
"_id": "",
"order_id": "",
"__v": 0,
"adminconfirmation": 1,
"finalpricetodeduct":
}
]
},
}
我从活动中调用改造:
final AllOrdersResponse allOrdersResponse = new AllOrdersResponse(userID);
Call<AllOrdersResponse> responseCall = retrofit_interface.allOrderResponse(allOrdersResponse, "Bearer " + AuthToken);
responseCall.enqueue(new Callback<AllOrdersResponse>() {
@Override
public void onResponse(@NotNull Call<AllOrdersResponse> call, @NotNull Response<AllOrdersResponse> response) {
AllOrdersResponse response1 = response.body();
}
@Override
public void onFailure(@NotNull Call<AllOrdersResponse> call, @NotNull Throwable t) {
if (t instanceof SocketTimeoutException)
Toast.makeText(context, "Socket Time out. Please try again.", Toast.LENGTH_LONG).show();
else
Toast.makeText(context, t.toString(), Toast.LENGTH_LONG).show();
}
});
【问题讨论】:
-
Offtopic:看看 OpenAPI 标准。有几个 API 生成器用于多种语言的客户端和服务器。
-
您可以使用在线 json 到 POJO 转换器网站
-
@Rajesh 我知道,但这次我需要逻辑方面的帮助。
-
@FaltFe 感谢您的建议。但我只在 Android 部分工作,我的后端团队正在为我提供这个 api。
-
使用jsonschema2pojo.org 生成pojo 类
标签: java android json gson retrofit2