改造POST对象列表和List <MultipartBody.Part>

问题描述

改造2.4.0

retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();

我需要在同一请求中发布对象列表和图片列表,如下所示:

@Multipart
@POST("api/debug/{id}/")
Call<ItemResponse> uploadItems(
        @Path("id") int id,@Part("items[]") List<Item> items,@Part List<MultipartBody.Part> pictures);

服务器端项目列表未正确序列化:

{
  "items": [
    "{"description":"desc1","id":1,"title":"title1"}","{"description":"desc2","id":2,"title":"title2"}","{"description":"desc3","id":3,"title":"title3"}"
  ],"picture1": {
    "name": "picture1","size": "315.777KB"
  },"picture2": {
    "name": "picture2","size": "207.821KB"
  }
}

问题似乎出在使用@Part。

诀窍是什么?

解决方法

好吧,你不能替换吗 @Part("items[]")@Part?然后,您将在JSON响应中获得与图片的列表结构相同的结构。