【问题标题】:JSON.parse() fails when a string contains the "null" sunstring... for exemple with italian words like "annullo" or "annullare"当字符串包含 \"null\" 子字符串时,JSON.parse() 失败......例如意大利语单词,如 \"annullo\" 或 \"annullare\"
【发布时间】:2023-01-31 20:48:54
【问题描述】:

大家早上好,提前感谢您的任何建议。我已经编写了一个小型 Web 应用程序来使用 php 和 javascript 在邮票数据库中执行简单的搜索。

服务器将整个数据库作为 JSON 发送到浏览器,查询在客户端使用 JavaScript 代码完成。 JSON 具有以下结构: {"ck":0,"db":[["string11","string12","string13"],["string21","string22","string23"], etc... } .

到目前为止,该系统运行良好,可以显示 1500 多枚邮票。 突然它停止工作,在浏览器的 Javascript 控制台中,出现以下错误消息: VM672:1 Uncaught SyntaxError: Expected ',' or ']' after array element in JSON at position 97506 at JSON.parse (<anonymous>) ...etc...

经过一系列的测试,通过排除,我发现是最后添加的记录中的“annullo”这个词产生了错误。

我想这可能是子字符串“null”引起的问题,但我不知道如何逃避它。 一件非常奇怪的事情是,虽然 JSON.parse() 函数失败,但浏览器的 javascript 控制台以及其他 json 验证工具将服务器的响应识别为有效的 JSON。

谢谢你的帮助!

【问题讨论】:

  • "anullo" 之类的字符串将是有效的 JSON。永远不要将它误认为是null,否则 JSON 编码的整个概念都会失败。 jsbin.com/govuroh/edit?js,console
  • 欢迎来到堆栈溢出!没有人能告诉您我们看不到的代码有什么问题。请提供一个 minimal reproducible example 来演示问题。要了解有关此社区的更多信息以及我们如何为您提供帮助,请从tour 开始并阅读How to Ask 及其链接资源。

标签: javascript json null substring escaping


【解决方案1】:

我想我明白了这个问题。所有字符串都用引号引起来。

{example: "example"}

在这个案例的开发过程中,他们一定是输入了“annullo”,但他们忘了插入引号。如果它为空,不是字符串, 它可能看起来像这样,没有引号。

json = {例如:空}

但是,由于 annullo 是 javascript 中的无效词并且不是字符串,因此会报错。

正确的做法是更正源代码中的错误,将其转换为 null,但是,我相信您也可以使用此正则表达式。但要进行测试以确保其他地方没有不当替代。

json.replace(/.+["']: ?annull(o|are)[
,}]$/g, matched => {
    return matched.replace(/annull(o|are)/, 'null')
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-20
    • 2023-04-03
    • 1970-01-01
    • 2018-10-26
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多