我有课:

@XmlRootElement(name = "myobject")
@XmlAccessorType(XmlAccessType.FIELD)
public class MyObject {

    @XmlElement
    private Long id;
    @XmlElement
    private String name;
    ...
}


我使用Retrofit 2将数据发送到服务器。要求

方法进入界面:

@POST("/update")
Call<Response> updateObject(@Body MyObject myObject);


当我使用这个:

retrofit = new Retrofit.Builder()
    .baseUrl(API_URL)
    .addConverterFactory(GsonConverterFactory.create())
    .build();
ServerAPI api = getRetrofit().create(ServerAPI.class);
Call<Response> call = api.updateObject(myObject);
...
retrofit2.Response response = call.execute();
...


发送到服务器

{"id":3,"name"}


但是我需要

{myobject:{"id":3,"name"}}


也就是说,将正文包裹在{myobject}中。怎么修?

最佳答案

最简单的方法是将响应包装在要发送的对象周围。

public class ObjectWrapper {
  @SerializedName("myobject")
  public final MyObject myObject;

  public ObjectWrapper(MyObject myObject) {
    this.myObject = myObject;
  }
}

10-06 14:39