我正在尝试使用一个API,其中一个端点在单个POST主体中接受多个请求,如下所示:
body:
{
"<requestId>": {
"actionFoo": "objId"
},
"<requestId>": {
"actionBar": "objId"
}
}
requestIds是在客户端生成的唯一字符串。我正在为这些值生成UUID。
所以我尝试使用像这样定义的Api来使用Retrofit:
首先我定义了一个“ActionCommand”对象:
public class ActionCommand {
private String actionFoo;
private String actionBar;
}
并将其输入Hashmap地图。我使用了这样定义的api:
@POST("/path/{someObjectId}/commands")
Map<String,ActionResponse> sendActions(@Path("someObjectId")String objectId, @Body Map<String, ActionCommand> actionMap);
后端肯定正确地获取了objectId,但没有获得地图中的任何操作。我不确定我应该如何发送这些参数
谢谢,
答案 0 :(得分:0)
像这样改变你的pojo类:
package com.example;
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class MyPojo {
@SerializedName("<requestId>")
@Expose
private RequestId requestId;
/**
*
* @return
* The requestId
*/
public RequestId getRequestId() {
return requestId;
}
/**
*
* @param requestId
* The <requestId>
*/
public void setRequestId(RequestId requestId) {
this.requestId = requestId;
}
}
你的第二个Pojo会是这样的;
package com.example;
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class RequestId {
@SerializedName("actionBar")
@Expose
private String actionBar;
/**
*
* @return
* The actionBar
*/
public String getActionBar() {
return actionBar;
}
/**
*
* @param actionBar
* The actionBar
*/
public void setActionBar(String actionBar) {
this.actionBar = actionBar;
}
}
答案 1 :(得分:0)
我的改装设置是正确的。问题是我遗漏了&#34; application / json&#34;头。