【问题标题】:JSON with double qoute, how to manage?JSON带双引号,如何管理?
【发布时间】:2018-05-25 13:57:42
【问题描述】:

我正在使用一个 Web 应用程序 好吧,我正在使用一个返回 JSON 对象格式的字符串的 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)

它工作得很好,但是我之前提到的问题是当某些字段有这个字符时。

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

【问题讨论】:

  • 创建 json 时出现问题。如果您手动创建它...不要。所有语言都有数组和对象到 json 的序列化器,并且将转义任何仅提供有效 json 的引号
  • 如果你想在 JSON 中转义双引号,请使用 \\ 转义它。

标签: javascript jquery json html-parsing


【解决方案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 \\

【讨论】:

    【解决方案2】:

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

    1. 如果您正在生成 JSON,那么只需为任何双引号添加转义字符,如下所示 [{"name":"Luigi\\"","Last_Name":"Car"},{"name":"Mario","Last_Name":"Bros"}]

    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)

    【讨论】:

    • @PoorChristmas 如果可行,请点赞。干杯。
    猜你喜欢
    • 2011-11-16
    • 2013-06-22
    • 2021-01-08
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 2014-05-28
    • 1970-01-01
    相关资源
    最近更新 更多