JSON有双qoute,如何管理?

时间:2017-12-11 23:36:34

标签: javascript jquery json html-parsing

我正在使用一个Web应用程序 好吧,我正在使用一个返回JSON对象格式的String的Web应用程序,类似于:

[{"name":"Luigi","Last_Name":"Car"},{"name":"Mario","Last_Name":"Bros"}]

但问题是当一个字段中有双引号时,例如:

[{"name":"Luigi"","Last_Name":"Car"},{"name":"Mario","Last_Name":"Bros"}]

(路易吉有一个")

当字段没有引号时,我用这一行管理这个字符串:

JSON.parse(response.d)

它完美无缺,但我之前提到过的问题是某个领域有这个特征。

我希望你能帮助我。提前谢谢。

2 个答案:

答案 0 :(得分:0)

以下字符在JSON中保留,必须正确转义才能在字符串中使用:

Backspace is replaced with \b.
Form feed is replaced with \f.
Newline is replaced with \n.
Carriage return is replaced with \r.
Tab is replaced with \t.
Double quote is replaced with \"
Backslash is replaced with \\

答案 1 :(得分:0)

@PoorChristmas,有多种方法可以解决这个问题。

  1. 如果您正在生成JSON,那么只需为任何双引号添加转义字符,如下所示 [{ “名称”: “路易\\””, “姓氏”: “汽车”},{ “名称”: “马里奥”, “姓氏”: “兄弟”}]

  2. 如果您无法控制JSON的生成,请尝试使用以下逻辑将单个双引号替换为任意多个双引号

  3. var a = '[{"name":"Luigi"""""""""""""","Last_Name":"Car"},{"name":"Mario","Last_Name":"Bros"}]';
    var b = a.split("");
    var c = "";
    for (i = 1; i < b.length; i++) {
        if (b[i] == '"') {
            if (b[i - 1] == '{' || b[i + 1] == ':' || b[i - 1] == ':' || b[i + 1] == ',' || b[i - 1] == ',' || b[i + 1] == '}') {
                c = c + b[i];
            }
        } else {
            c = c + b[i];
        }
    }
    
    console.log(c)