【发布时间】:2019-08-28 03:29:37
【问题描述】:
我有以下结构的对象:
class MyObject{
private String firstString;
private BigDecimal bigDecimal;
private NestedObject nestedObject;
private Map<String, String> map;
}
我想通过 Postman 创建一个POST 调用,下面是JSON:
{
"firstString": "first",
"bigDecimal": 1.2222,
"nestedObject": {
"secondString": "second"
},
"param1": "paramValue1",
"param2": "paramValue2",
"param3": "paramValue3"
}
我也试过了:
{
"firstString": "first",
"bigDecimal": 1.2222,
"nestedObject": {
"secondString": "second"
},
"customMap" :{
"param1": "paramValue1",
"param2": "paramValue2",
"param3": "paramValue3"
}
}
我想将param1、param2、param3 视为Map 键 - 值,因为参数将是未知的(元素的数量可能是 1 或 1000 ) 我想将其解析为收到此正文后的步骤之一。
NestedObject 是一个具有已知结构的完全嵌套对象。
@POST
@Path("/")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public String getEntity( MyObject myObject){
//sth
}
当我在调用后完全按照上述方式执行此操作时,我得到 Object 但 map 变量为空。我该如何解决这个问题,您有什么想法吗?
编辑附加信息: @lealceldeiro 您可以在下面找到我的代码,是否有任何“可疑”部分?
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.HashMap;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
class SearchParamsFromRequest {
private NestedObject nestedObject;
private String surname;
private String type;
private String userName;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<>();
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
@POST
@Path("/")
@Consumes({MediaType.APPLICATION_JSON})
public String getString (SearchParamsFromRequest searchParameters){
return "Any String";
}
【问题讨论】:
标签: java rest post jax-rs postman