代码之家  ›  专栏  ›  技术社区  ›  SHIDHIN TS

如何根据改造请求传递对象数组?

  •  0
  • SHIDHIN TS  · 技术社区  · 6 年前

    我想通过我的改造请求传递一系列的对象。通过截击,我们将请求数组作为,

    {OrderId=11692, ItemsList[1][Amount]=1, ItemsList[1][id]=29, ItemsList[1][Notes]=2.0, ItemsList[0][TypeId]=23, ItemsList[0][Notes]=15.0, ItemsList[1][serviceId]=28, ItemsList[0][serviceId]=27, ItemsList[0][Amount]=3, ItemsList[0][id]=29, ItemsList[1][TypeId]=23}
    

    如何使用此格式发送请求?

    我是这样想的:

    @FormUrlEncoded
    @POST("api/shidhin/UpdateOrder")
    Call<CommonResponse> updateOrderItems(@Header("Authorization") String token, @Field("OrderId") int orderid, @Field("ItemsList[]") ItemsList[] itemsList);
    

    ItemsList.java类文件

    public class ItemsList {
        @SerializedName("id")
        private int id;
        @SerializedName("Amount")
        private int Amount;
        @SerializedName("Notes")
        private String Notes;
        @SerializedName("serviceId")
        private int serviceId;
        @SerializedName("TypeId")
        private int TypeId;
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   SHIDHIN TS    6 年前

    我通过将对象数组作为 @FieldMap . 她就是解决这个问题的方法,

    创建对象数组,

            Order.Orderitems orderitems;
            Map<String, String> parms = new HashMap<String, String>();
            for (int i = 0; i < orderItems.size(); i++) {
                orderitems = orderItems.get(i);
                parms.put("ItemsList[" + i + "][id]", String.valueOf(orderitems.getId()));
                parms.put("ItemsList[" + i + "][Amount]", String.valueOf(orderitems.getAmount()));
                parms.put("ItemsList[" + i + "][Notes]", "");
                parms.put("ItemsList[" + i + "][serviceId]", String.valueOf(orderitems.getServiceId()));
                parms.put("ItemsList[" + i + "][TypeId]", String.valueOf(orderitems.getServiceTypeId()));
            }
    

    也使得API调用像,

    @FormUrlEncoded
    @POST("api/shidhin/UpdateOrder")
    Call<CommonResponse> updateOrderItems(@Header("Authorization") String token, @Field("OrderId") int orderid, @FieldMap Map<String, String> parms);