У меня есть объект со структурой ниже:
class MyObject{
private String firstString;
private BigDecimal bigDecimal;
private NestedObject nestedObject;
private Map<String, String> map;
}
И я хотел бы создать 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
}
Когда я делаю это точно так же, как и выше, после вызова я получаю объект, но переменная карты является нулевой.Как я могу решить эту проблему, у вас есть какие-либо идеи?
РЕДАКТИРОВАТЬ дополнительную информацию: @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";
}