gpt4 book ai didi

javascript - 将字符串解析为 JSON,键和键值上带有单引号

转载 作者:行者123 更新时间:2023-11-28 18:14:50 26 4
gpt4 key购买 nike

var str = "{'a':'Your's'}";
JSON.parse(str);

我的服务器响应如上面的字符串。无法解析为 JSON。这是示例文本。在解析时出现如下错误:

JSON.parse(str);
VM1951:1 Uncaught SyntaxError: Unexpected token ' in JSON at position 1(…)(anonymous function) @ VM1950:1

有人已经提出了同样的问题。点击here查看。但是,没有帮助。请帮忙解决这个问题。提前致谢。

最佳答案

TL;DR JSON 仅支持双引号。如果可能的话,请修复服务器上的错误。

<小时/>

JSON 需要双引号,因此单引号不符合标准。无论如何,可能有支持它们的解析器,但你永远不能依赖它。有关 JSON 语法的更多详细信息,您可以查看 http://www.json.org/ .

除此之外,如果单引号有效,则输入字符串 "{'a':'Your's'}"; 本身完全无效。 Your's 中的 ' 破坏了字符串文字,后面的 s 在字符串之外,下一个 ' 是打开一个包含 } 的字符串,但永远不会被另一个 ' 关闭。

正确的语法是'{"a":"Your\'s"}'。如果您收到该字符串并且无法更正服务器输出,您可以尝试将所有 ' 替换为 ",但负载字符串中的单引号会出现问题。最简单且最稳定(!)的修复应该是纠正服务器输出,而不是纠正客户端上的缺陷输出。

<小时/>

乍一看,使用以下代码在客户端上进行转换可能是个好主意,但会损坏其中包含单引号的负载字符串。

replaceInString = function(fullString, search, replacement) {
return fullString.split(search).join(replacement);
};

var json = replaceInString("{'a':'Your's'}", "'", '"');

如果您可以确定有效负载之外没有空格字符,也没有换行符,您可以使用以下函数。但前提是,如果您确定搜索模式不在有效负载字符串中。

var json = "{'a':'Your's'}";

replaceInString = function(fullString, search, replacement) {
return fullString.split(search).join(replacement);
};

json = replaceInString(json, "{'", '{"');
json = replaceInString(json, "'}", '"}');
json = replaceInString(json, "':", '":');
json = replaceInString(json, ":'", ':"');
json = replaceInString(json, "',", '",');
json = replaceInString(json, ",'", ',"');
json = replaceInString(json, "['", '["');
json = replaceInString(json, "']", '"]');

但是使用这段代码,例如JSON`以下 JSON 字符串将被损坏。

{'mathTerm':'x=1-[2+A']'}

需要明确的是:这样的代码可以帮助您克服开发、测试或学习某些东西的道路上的障碍。但这并不是一个持久的解决办法。在投入生产之前,请联系服务器开发人员修复其实现并删除客户端修复。

关于javascript - 将字符串解析为 JSON,键和键值上带有单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40928599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com