Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring中处理json列表?_Java_Json_Spring_Rest - Fatal编程技术网

Java 如何在Spring中处理json列表?

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/

我想将所有复选框ID和选中的参数1或0作为json列表发送到服务器。我尝试了很多次并在Google上搜索了很多次,但没有得到任何结果。我得到了语法错误的错误

我的java代码:

@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;