使用eval
与来自您信任的来源的良好控制的数据很好。解析器的启动成本在最坏的情况下可以忽略不计。当然,使用eval
从源不良控制的数据,你不信任是一个坏主意TM。
如果你不使用eval
,恐怕没有真正的捷径,你必须自己解析字符串。如果它真的只是一个简单的列表如图所示,那么使用正则表达式的split
调用可以做到这一点,不需要全开分析器。
快速现成的,袖口的例子(live copy | source):
(function() {
var data = '{required:true, minlength:2, maxlength:100}';
var entries, index, entry, parts;
entries = data.substring(1, data.length - 2).split(/, ?/);
for (index = 0; index < entries.length; ++index) {
entry = entries[index];
parts = entry.split(/: ?/);
display("Key '" + parts[0] + "', value '" + parts[1] + "'");
}
function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}
})();
当然这是完全假设的(最明显的是,价值观永远不会包含逗号或冒号字符串),但同样,如果数据很简单,你可以避免一个完整的解析器。
“约束是我不能使用JSON” ......为什么?这是JSON的完美用例。改变你的字符串引用键,它是有效的JSON。 – 2013-04-23 08:31:00
不管怎样,它不是JSON,因为JSON中的键必须被双引号....你从哪里得到这些字符串? – 2013-04-23 08:31:13
如果它是一个有效的JSON字符串,那么你可以使用'JSON.parse( '{ “需要”:真实的, “使用MINLENGTH”:2, “最大长度”:100}')'。 – dfsq 2013-04-23 08:31:15