JSON解析有时会在解析字符串时出现错误

我有相同的输入字段,用户可以在其中输入一些数据。接下来,我的代码将其转换为JSON并将其发送到服务器。

$("#submit").click(function(){
    var inp = $("#inpTxt").val();

    if(inp == null || inp == ""){
        return;
    }

    jsonResult = JSON.parse('{"data": "' + inp + '"}');

    $.ajax({
        data : jsonResult,...
    });
});

这里的问题是,有时上述代码有时有效,有时却无效。 在大多数情况下,我测试代码的过程都是很吸引人的,但是在生产环境中,我会不断报告错误多次。

我还无法找出可能的原因。

注意:上面的部分代码并未共享,而只是问题的一部分。

shanghaiditu 回答:JSON解析有时会在解析字符串时出现错误

根据最后一条评论,当有人在输入中输入一些转义字符时,似乎出现了问题(@ Noob46确定了使用“ Something”大小写的情况,但在我看来,如果还有其他转义字符,例如\或,也会发生此问题。以\开头的其他任何字符也可能导致相同的问题。

因此,处理此问题的一种方法是在将传入的输入字符串传递给JSON.parse之前对其进行过滤。

要使事情向前迈进,我创建了一些js,您可以找到here,实际上,如果转义字符作为输入的一部分出现,它们将让您处理它们。

有关更多详细信息,请参见随附的链接here中的随附代码和示例。

,

由于我确定了问题,因此让我在此处也给出答案。您需要做的是在遇到的所有转义字符之前添加一个附加\,例如:

\ b:退格键

\ f:换页

\ n:换行符

\ r:回车符

\ t:水平标签

\ v:垂直标签 “:双引号 \:反斜杠

您可以通过以下代码来实现:

inp = inp.replace('"','\\\"');

inp.replace('\','\\\\');

其他字符依此类推。

,

使用JSON.Parse函数时,您需要自己处理特殊字符。因此,如果有人在您的inpTxt输入中放入“”,则会在解析该字符串时引起错误。

您应该执行类似以下代码的操作,以避免解析错误,并让javascript正确处理字符串上的特殊字符。

jsonResult = { data: inp };

我创建了一个JS小提琴,以使其更易于理解。 https://jsfiddle.net/ub3w0a8x/

本文链接:https://www.f2er.com/3037205.html

大家都在问