首页 > 解决方案 > 接收 json 数据时出现 JSON 解析错误

问题描述

您好我正在尝试将 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 Content-Disposition: form-data; 名称="arrStr"

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

请帮忙。谢谢。

标签: javajsonspring

解决方案


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

有两种方法可以修复它。

1.您只需要发送nameList

data: JSON.stringify(nameList)

2. 您想将其作为 FormData 发送(可选连同其他数据)

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

推荐阅读