Java 如何在Spring中处理json列表?
我想将所有复选框ID和选中的参数1或0作为json列表发送到服务器。我尝试了很多次并在Google上搜索了很多次,但没有得到任何结果。我得到了语法错误的错误 我的java代码:Java 如何在Spring中处理json列表?,java,json,spring,rest,Java,Json,Spring,Rest,我想将所有复选框ID和选中的参数1或0作为json列表发送到服务器。我尝试了很多次并在Google上搜索了很多次,但没有得到任何结果。我得到了语法错误的错误 我的java代码: @Autowired ParamService paramService; @RequestMapping(value = "/refresh", method = RequestMethod.POST, produces = "application/json", consumes = "application/
@Autowired
ParamService paramService;
@RequestMapping(value = "/refresh", method = RequestMethod.POST, produces = "application/json", consumes = "application/json")
public @ResponseBody String refreshModelParamRel(@RequestBody ParamWrapper pw) {
System.out.println("params size"+pw.getParams().size());
}
参数包装器:
public class ParamWrapper {
private List<ParamDTO> params;
private Integer modelId;
public ParamWrapper() {
}
public List<ParamDTO> getParams() {
return params;
}
public void setParams(List<ParamDTO> params) {
this.params = params;
}
public Integer getModelId() {
return modelId;
}
public void setModelId(Integer modelId) {
this.modelId = modelId;
}
}
编辑:
好的,那么我认为语法问题在于params={}对象,它应该是数组params=[]
更改:
var paramWrapper={}
var params = {};
var allParams = $("input[name='param']");
for (i = 0; i < allParams.length; i++) {
var param = {};
param["id"] = allParams[i].value;
param["checked"] = allParams[i].checked;
params[i] = param;
}
paramWrapper["params"] = params;
为此:
var paramWrapper = {};
var params = [];
var allParams = $("input[name='param']");
for (i = 0; i < allParams.length; i++) {
var param = {};
param["id"] = allParams[i].value;
param["checked"] = allParams[i].checked;
params[i] = param;//or params.push(param);
}
paramWrapper["params"] = params;
我认为应该这样做。你能发布你得到的错误堆栈吗?错误请求:客户端发送的请求在语法上不正确。这似乎表明JSON有问题,请尝试记录JSON,可能是通过alertJSON.stringifyparamWrapper;我更新了问题。请看底部。我在那里写了JSON请求谢谢你的回答。我更改了我的方法:public@ResponseBody StringrefreshModelParamRel@RequestBodyParamWrapper和json函数:var ParamWrapper={};xhr.sendJSON.stringifyparamWrapper;但是我得到了同样的错误。语法不正确,请看我的编辑。Spring可以自动处理和填充对象。我像这样编写我的所有服务。我声明为对象而不是字符串。我没有在服务器端解析任何字符串。Spring正在解析所有这些并填充。例如,此方法正在工作:StringupdateModelParamRel@RequestBodyModelParamRelDTO mpr,这里我不从json发送mpr。无论您在ModelParamRelDTO结构Spring中发送什么,都会得到这个json,但我不知道为什么我不能发送列表?使用JsonObject和JsonArray,您可以同时使用对象和列表,但我认为问题在于如何在javascript中格式化Json对象。请看我的编辑。非常感谢。结果是:问题只是var params=[];非var params={};我在没有推动的情况下测试了它。问题不在服务器端,不管你们写的参数名是什么,它都有效:@RequestBody ParamWrapper pw;或@RequestBody ParamWrapper;不管json数组名是什么,它都可以工作:var paramWrapper={};或var anythingYouWant={};
var params = {};
var allParams = $("input[name='param']");
for (i = 0; i < allParams.length; i++) {
var param = {};
param["id"] = allParams[i].value;
param["checked"] = allParams[i].checked;
params[i] = param;
}
paramWrapper["params"] = params;
var paramWrapper = {};
var params = [];
var allParams = $("input[name='param']");
for (i = 0; i < allParams.length; i++) {
var param = {};
param["id"] = allParams[i].value;
param["checked"] = allParams[i].checked;
params[i] = param;//or params.push(param);
}
paramWrapper["params"] = params;