【发布时间】:2016-08-19 02:38:41
【问题描述】:
我有这个字符串要转换为 JSON 对象,问题是对象的字段之一是正则表达式:
"{
\"regex\": /^([a-zA-Z0-9_\\.\\-\\+%])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/,
\"alertText\": \"test\"
}"
有没有办法在不进行数百次替换的情况下获取 JavaScript 对象?
编辑:我使用以下代码存储来自Stringifying a regular expression? 的原始对象的正确序列化版本:
RegExp.prototype.toJSON = function() { return this.source; };
然后我可以修改字符串的内容:
{"regex":"^([a-zA-Z0-9_\\.\\-\\+%])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$","alertText":"* {{alertText}}"}
所以我可以将它用作模板,然后在需要时 JSON.parse 字符串以获取新对象。
【问题讨论】:
-
我想了解更多关于如何获得此内容的 JS 和 HTML。CRLF 字符使这变得不必要地复杂
-
首先是什么将它序列化为字符串?问的原因:它有可以使用的解析对应项吗?
-
Regex 在 JavaScript 中不需要用引号括起来,但 JSON 不支持 Regex 文字。编写一个原型函数来将您的正则表达式转换为 JSON 字符串和从 JSON 字符串转换。见stackoverflow.com/questions/20276531/…。
-
您没有 JSON,因为您有一个非标量值(正则表达式文字)。您需要确保 1) 您使用适当的序列化技术生成 JSON,而不是手动生成 2) 使用字符串来表示正则表达式,并在您准备好时通过将其传递给 JS 的 RegExp 构造函数来“唤醒它”使用它。
-
c#使用rest web api MVC
标签: javascript json parsing