- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我是一名优秀的程序员,十分优秀!