当我希望使用@RequestBody批注将其直接映射到Java pojo时,如何在json帖子中格式化地图找不到很好的答案。我假设json看起来像:
{
"myInt":"10",
"myMap":"{1:\"A\"}"
}
我的pojo会有一个myInt
字段和一个myMap
字段。 myMap
字段的类型为Map<Integer,String>
地图的json看起来如何工作?
答案 0 :(得分:2)
根据您的JSON结构myMap
是String
。但是,即使您从myMap
的值中删除引号,您也会发现{1:"A"}
不是有效的JSON,有效的JSON语法要求所有属性键都是字符串。有效的JSON结构类似于{"1":"A"}
。反序列化程序应该能够将密钥强制转换为Integer
,因此Map<Integer, String>
很好。
答案 1 :(得分:1)
首先,请确保具有以下资源方法:
@Path("/url")
public class Test {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response post(@RequestBody Foo foo) {
...
}
}
然后,当您通过POSTMAN发送请求时,将类型选择为POST,然后选择“原始”选项,然后仅在“正文”中发送包含要放入Map中的值的JSON。记住选择“ application / json”。 Jackson将为您将JSON转换为Map。
{
"myInt": 10,
"myMap": {
1: "A"
}
}