接收JSON数据时出现JSON解析错误

时间:2019-05-26 15:14:46

标签: java json spring

嗨,我正在尝试将JSON数组从POST发送到Spring后端。

在我的Javascript中:

$('#tblfilelisting tbody tr').each(function () {
        var namerecord = {
            No: $(this).find('.assignindex').text().trim(),
            Name: $(this).find('.getname').val(),
            File: $(this).find('.getfilename').text().trim(),
            Status: $(this).find('.radioname:checked').val()
        };
        nameList.push(namerecord);
    });

    var jasonData = new FormData();
    jasonData.append('arrStr', JSON.stringify(nameList));
    $.ajax({
        type: 'POST',
        url: '/api/CheckValidateBeforeSave',
        data: jasonData,
        contentType: 'application/json',
        processData: false,
        beforeSend: function () {
            //
        },
        success: function (data) {
            if (data.code != '200') {
                return false;
            }
            var get = data.jasonResult;
            for (var i = 0; i < get.length; i++) {
                appendResultResponse(get.No[i], get.Name[i], get.File[i], get.Status[i], get.Result[i]);
                appendErrorMess(get.No[i], get.hasDuplicated[i]);
            }
            $('#uploadFileConfirmation').modal('show');
        },
        error: function (err) {
            //
        },
    });

在我的REST控制器中,我有:

@PostMapping(value = "/CheckValidateBeforeSave", produces = "application/json", consumes = "application/json")
    @ResponseBody
    public FileManagement CheckValidateBeforeSave(@RequestBody FileManagement fileManagement) {
        fileManagementService.checkMultipleFiles(fileManagement);
        return fileManagement;
    }

但是我得到的错误是: JSON解析错误:数字值中出现意外字符(“-”(代码45)):有效数字值后跟减号的期望数字(0-9);嵌套的异常是com.fasterxml.jackson.core.JsonParseException:数字值中出现意外字符(“-”(代码45)):有效数字值后的预期数字(0-9)将跟随减号

但是我的POST请求没有-签名:

------ WebKitFormBoundaryId7kxO7B9rozEwHv 内容处置:表单数据; name =“ arrStr”

[{“ No”:“ 1”,“ Name”:“ dd”,“ File”:“ Test PDF 2.pdf”,“ Status”:“ on”}]] ------ WebKitFormBoundaryId7kxO7B9rozEwHv-- line-awesome.woff2?v = 1.1。 CheckValidateBeforeSave common.js util.js AuthenticationService.Authenticate?1shttp%3A%2F%2F…zaSyBTGnKT7dt597vo9QgeQ7BFhvSRP4eiMSM&token = 29026

请帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

得到JSON parse error的原因是您实际上没有发送JSON格式的数据。相反,您的数据具有FormData格式。

有两种方法可以修复它。

1。您只需要发送nameList

data: JSON.stringify(nameList)

2。您希望将其作为FormData(可选地与其他数据一起)发送

data:  {formdata: jasonData, var2: "other data"}