嗨〜我使用了springframework和jackson库来映射json数据。 当客户端向服务器发送json数据时,例如
"files": [
{
"fileLoctn": "%INSTALL_PATH%\\beth_birthday.jpeg",
"fileSize": "10",
"fileVer": "0.1"
},
{
"fileLoctn": "%INSTALL_PATH%\\beth_graduate.jpeg",
"fileSize": "10",
"fileVer": "0.1"
}
]}
我像这样映射它。它奏效了。
@RequestBody Map<String, List<InfoVO>> listInfoVo
但是当我改变了诸如
之类的json数据 {
"useId" : "Beth",
"files": [
{
"fileLoctn": "%INSTALL_PATH%\\beth_birthday.jpeg",
"fileSize": "10",
"fileVer": "0.1"
},
{
"fileLoctn": "%INSTALL_PATH%\\beth_graduate.jpeg",
"fileSize": "10",
"fileVer": "0.1"
}
]},
{
"useId" : "Tom",
"files": [
{
"fileLoctn": "%INSTALL_PATH%\\Tom_birthday.jpeg",
"fileSize": "10",
"fileVer": "0.1"
},
{
"fileLoctn": "%INSTALL_PATH%\\Tom_graduate.jpeg",
"fileSize": "10",
"fileVer": "0.1"
}
]}
我像这样映射了@Requestbody。
@RequestBody List<Map<Map<String,String>, Map<String, List<InfoVO>>>> listInfoVo
但它不起作用。如何更改@RequestBody参数类型? 我不知道。如何更改参数。
InfoVo包含带有get / set方法的fileLoctn,fileSize,fileVer,UserId。
答案 0 :(得分:1)
我建议你定义一个类来映射它...数据结构似乎不那么清楚......
public class PayloadDTO {
private String userId;
private List<FileDesc> files;
// getters and setters
}
public calss FileDescDTO {
private String fileLoctn;
private String fileSize;
private String fileVer;
// getters and setters
}
然后你就可以简单了:
@RequestBody List<PayloadDTO> listInfoVo
答案 1 :(得分:1)
这样做的一种方法是定义一个像这样的新占位符类。
public class ClientRequest {
private String userId;
private List<InfoVO> files;
}
和替换控制器方法如下。
@RequestBody List<ClientRequest> listInfoVo
答案 2 :(得分:0)
确保您的参数是有效的JSON格式。
List<String> : ["a", "b", "c" ...]
Map<String, Object> :
{
"a":{"key1":"value1","key2":"value2", ...},
"b":{"key1":"value1","key2":"value2", ...}
}
List<Map<String, Object>> :
[
{"a":{"key1":"value1","key2":"value2", ...}},
{"a":{"key1":"value1","key2":"value2", ...}}
]
答案 3 :(得分:0)
您可以使用此网站将json转换为pojo&#39; s http://www.jsonschema2pojo.org/