我已经在后端PHP API中对此进行了测试。 像这样传递的数据:
{
"driver": "Dzil",
"vehicle_number": "Jalal",
"date_unique_number": "2019-09-09",
"unique_number": "ABCDEF",
"rest_product_weighing_details": [400,401]
}
如您所见,rest_product_weighing_detail
是一个数组。
如何进行改造将在后期处理?
任何对此表示赞赏的建议
答案 0 :(得分:1)
创建一个对象来设置数据。
public class BodyModel {
@SerializedName("driver")
@Expose
private String driver;
@SerializedName("vehicle_number")
@Expose
private String vehicleNumber;
@SerializedName("date_unique_number")
@Expose
private String dateUniqueNumber;
@SerializedName("unique_number")
@Expose
private String uniqueNumber;
@SerializedName("rest_product_weighing_details")
@Expose
private List<Integer> restProductWeighingDetails = null;
//...
}
在api调用中将该对象作为主体传递
@Headers({"Content-Type: application/json"})
@POST("your/api/endpoint")
Call<ResponseBody> sendDrivingData(@Body BodyModel body);
答案 1 :(得分:1)
我想正是这样为您解决的:
private List<Integer> rest_product_weighing_details;
,此链接也可以帮助您: Android retrofit parse nested json response in List
答案 2 :(得分:1)
第1步:
在您的解码类中:
public class Decode {
private List<Integer> values = new ArrayList<>(); // in json it is "rest_product_weighing_details"
public List<Integer> getValues() {
return values;
}
public void setValues(List<Integer> values) {
this.values = values;
}
}
第2步:
创建以下JsonDeserializer
:
public class MyDeserializer implements JsonDeserializer<Decode> {
@Override
public Decode deserialize(JsonElement arg0, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
JsonObject decodeObj = arg0.getAsJsonObject();
Gson gson = new Gson();
Decode decode = gson.fromJson(arg0, Decode.class);
List<Integer> values = null;
if (decodeObj.get("rest_product_weighing_details").isJsonArray()) {
values = gson.fromJson(decodeObj.get("rest_product_weighing_details"), new TypeToken<List<Integer>>() {
}.getType());
} else {
Integer single = gson.fromJson(decodeObj.get("rest_product_weighing_details"), Integer.class);
values = new ArrayList<Integer>();
values.add(single);
}
decode.setValues(values);
return decode;
}
}
答案 3 :(得分:0)
创建一个类并为其分配值,
public class Example {
@SerializedName("driver")
@Expose
private String driver;
@SerializedName("vehicle_number")
@Expose
private String vehicleNumber;
@SerializedName("date_unique_number")
@Expose
private String dateUniqueNumber;
@SerializedName("unique_number")
@Expose
private String uniqueNumber;
@SerializedName("rest_product_weighing_details")
@Expose
private List<Integer> restProductWeighingDetails = null;
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getVehicleNumber() {
return vehicleNumber;
}
public void setVehicleNumber(String vehicleNumber) {
this.vehicleNumber = vehicleNumber;
}
public String getDateUniqueNumber() {
return dateUniqueNumber;
}
public void setDateUniqueNumber(String dateUniqueNumber) {
this.dateUniqueNumber = dateUniqueNumber;
}
public String getUniqueNumber() {
return uniqueNumber;
}
public void setUniqueNumber(String uniqueNumber) {
this.uniqueNumber = uniqueNumber;
}
public List<Integer> getRestProductWeighingDetails() {
return restProductWeighingDetails;
}
public void setRestProductWeighingDetails(List<Integer> restProductWeighingDetails) {
this.restProductWeighingDetails = restProductWeighingDetails;
}
}
生成json pojo类