带有双qoute的JSON,如何管理?

JSON with double qoute, how to manage?

提问人:PoorChristmas 提问时间:12/12/2017 最后编辑:dganPoorChristmas 更新时间:12/12/2017 访问量:369

问:

好吧,我正在使用一个 Web 应用程序 好吧,我正在使用一个 Web 应用程序,它以 JSON 对象格式返回一个 String,如下所示:

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

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

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

(路易吉有一个“ )

当字段没有引号时,我用以下行管理此字符串:

JSON.parse(response.d)

它工作得很好,但是正如我之前提到的,问题是当某些领域具有这种特征时。

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

JavaScript jQuery JSON HTML 解析

评论

2赞 charlietfl 12/12/2017
创建 json 时出现问题。如果您手动创建它...不要。所有语言都有用于数组和对象到 json 的序列化程序,并且将转义任何仅提供有效 json 的引号
0赞 metamorph_online 12/12/2017
如果要在 JSON 中转义双引号,请使用 \\ 进行转义。

答:

0赞 prabhu379 12/12/2017 #1

以下字符保留在 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 \\
0赞 user9081948 12/12/2017 #2

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

  1. 如果您要生成 JSON,则只需为任何双引号添加转义字符,如下所示 [{“name”:“路易吉\\”“,”Last_Name“:”汽车“},{”name“:”马里奥“,”Last_Name“:”兄弟“}]

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

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)

评论

0赞 12/12/2017
如果它有效,@PoorChristmas竖起大拇指。干杯。