gpt4 book ai didi

javascript - 如何让JSON解析一个包含单引号的JSON字符串

转载 作者:行者123 更新时间:2023-11-30 19:30:36 30 4
gpt4 key购买 nike

我正在使用 JsonConvert.SerializeObject 在 ASP 中序列化一个数组。数组包含包含单引号等符号的文本。转换工作正常,直到我尝试使用 JSON.parse 在 JavaScript 中解析它。获取单引号时失败。如果可能,我想避免手动删除单引号。

这是 MVC 代码:

SheetsArr = JsonConvert.SerializeObject(Sheets);

这是JS代码:

var SheetsArr = JSON.parse('@Html.Raw(@Model.Sheets)');

这是 Chrome 中的错误消息:

Uncaught SyntaxError: missing ) 在参数列表之后

最佳答案

与其尝试将数据视为 JS 中的字符串并再次解析它,您可以直接将值作为数组文字注入(inject) JS。由于 JSON 是 JS 对象字面量语法的子集,因此它只会被视为字面量。不要认为您甚至不需要 Html.Raw() 命令。

简单尝试

var SheetsArr = @Model.Sheets;

(我在这里假设在 C# 中,您在返回模型之前将 C# SheetsArr 变量分配给了模型的 Sheets 属性。)

然后这消除了 JS 中的单引号字符串被 JSON 字符串中的单引号弄乱的问题。

为了说明这一点,假设 Model.Sheets 包含如下所示的 JSON 字符串:

[{ "SomeProp": "Hello, 'Friend'"}, { "SomeProp": "Hello again"}]

您可以看到单引号。

在您的原始代码中,执行包含该字符串的 Razor 代码将产生以下 JavaScript:

var SheetsArr = JSON.parse('[{ "SomeProp": "Hello, 'Friend'"}, { "SomeProp": "Hello again"}]');

如您所见,中间的单引号现在是一个问题,因为它们终止了外部字符串文字引号。

而如果我们只是按照我建议的方式直接注入(inject) JSON,则生成的 JS 是这样的(我添加了控制台命令只是为了让您可以看到结果):

var SheetsArr = [{ "SomeProp": "Hello, 'Friend'"}, { "SomeProp": "Hello again"}];
console.log(SheetsArr);

关于javascript - 如何让JSON解析一个包含单引号的JSON字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56479058/

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