1

我目前正在开发一个从 API 接收 JSON 的 JavaScript 插件。到目前为止,我检索了 JSON 并使用eval()它将此 JSON 转换为 JavaScript 对象。这就是问题开始的地方。

我的 JSON 包含一个“#text”属性。我评估了 JavaScript 对象,发现它也有这个“#text”属性,但我不能调用该属性,因为不接受带有井号标签的变量。

我知道两种可能的解决方案(用于eval()转换为数组或删除 hast-tag),但我更喜欢调用该属性。有任何想法吗?谢谢。

4

3 回答 3

9

您可以使用方括号引用对象属性:

var obj = {'#foo': 'bar'};
obj['#foo']; // 'bar'

确实,obj.#foo是无效的(即会引发语法错误),但上述方法很好。

另外,除非必须,否则不要使用 eval 。尽管是一个较慢的解决方案,但它的安全性较低,特别是考虑到通常有这么多的原生 JSON 方法,并且大多数 JSON 库只有在原生方法不存在时才会引入该功能。

于 2011-07-28T23:06:21.893 回答
3

不要使用 eval,尤其是为此。你是一个 json 解析器,现代浏览器已经有了它们。

var myObj = JSON.parse(returnFromServer);
console.log(myObj.firstProperty); // etc

这是 json2 的 CDN 链接http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js

于 2011-07-28T23:01:52.603 回答
1

在 eval 之前做一些事情,比如用其他东西替换井号。

于 2011-07-28T23:02:34.950 回答