Javascript 这是解析JSON的好方法吗?
我正在看另一个解析JSON的开发人员代码。我真的看不出它是怎么工作的,或者它是不是一个好主意Javascript 这是解析JSON的好方法吗?,javascript,json,Javascript,Json,我正在看另一个解析JSON的开发人员代码。我真的看不出它是怎么工作的,或者它是不是一个好主意 hmlPlaylist.prototype.loadVideos_callback = function (data) { var jsonData = ''; var jsonError = false; try { jsonData = eval("(" + data + ")"); } catch (jError) { jsonEr
hmlPlaylist.prototype.loadVideos_callback = function (data) {
var jsonData = '';
var jsonError = false;
try {
jsonData = eval("(" + data + ")");
} catch (jError) {
jsonError = true;
}
if (!jsonError) {
if (jsonData.playlists.length > 0) {
this.buildPlaylistList(jsonData.playlists);
}
if (jsonData.videos.length > 0) {
this.buildVideoList(jsonData.videos);
this.bindVideoNavs();
}
}
else {
// no json returned, don't do anything
}
};
这是路线
jsonData = eval("(" + data + ")");
这让我很生气。这对数据有什么影响?我以为你必须使用extarnal类库来解析JSON数据
稍后我可以看到,他像这样迭代集合:
for (var i = 0; i < playlistCount; i++) {
var p = playlists[i];
for(变量i=0;i
那么这真的是一种处理JSON的好方法吗?JSON.parse(stringOfJson)
是解析JSON的最佳方法。如果您使用jquery,那么您可以告诉$.ajax
您需要返回JSON,它将使用数据类型:'JSON'
配置选项为您解析JSON.parse(stringOfJson)是解析json的最佳方式。如果您使用jquery,那么您可以告诉$.ajax
您需要返回json,并且它将为您解析它,使用数据类型:“json”
配置选项不要这样做。执行以下操作:
Javascript的最佳推荐JSON解析器之一。不要这样做。请执行以下操作:
Javascript最好推荐的JSON解析器之一。大多数现代浏览器都支持本机的
JSON.parse
方法,该方法正好可以实现这一点。如果您的目标浏览器不支持,则可以使用Douglas Crockford提供的实现(滚动到底部)
在任何情况下,如果可以避免,请不要使用eval
更新(关于eval
):
如各国所述:
JSON是对象文本的子集
由于JSON是
作为JavaScript的子集,可以使用它
用一种没有混乱或烦躁的语言
这在实践中意味着什么?好吧,这意味着任何有效的JSON对象也是有效的JS代码(在技术术语中:它是一个有效的JS表达式,计算结果为对象文本)。因此,您可以将JSON粘贴到文件中,并告诉您的浏览器将其作为JavaScript加载,这样做不会出现任何错误或警告(当然是“JavaScript”实际上不会做任何事情,因为它只是对象的表示,而不是过程代码)
既然我们已经确定JSON可以解释为JavaScript,那么它也可以传递给。让我们看看关于eval
:
eval函数的参数是一个
如果字符串表示
表达式,eval计算
表情
解析JSON(将字符串转换为JavaScript对象)
如果您调用的代码<代码> Value>(代码)>包含数据(例如,数组:<代码>)[1, 2, 3 ] ,与代码相反,您应该考虑切换到JSON,这允许字符串使用JavaScript语法的子集来表示数据。 上面的解释可能不是最好的,但它确实说明了发生了什么:JSON可以被看作是一个JS表达式。
eval
接受一个表示JS表达式的字符串(在本例中,是一个包含JSON的字符串),对其求值并返回结果。它就像一个迷你编译器,您可以在运行时将代码提供给它,它将为您运行代码并返回结果。在这种情况下,结果将是一个JS对象(如前所述,JSON是表示对象的有效JS表达式)
所以如果你有
var json = '{"foo": "bar", "answer": 42}';
var object1 = eval(json);
var object2 = { foo: "bar", answer: 42 };
然后
object1
和object2
将是两个不同但完全相同的对象。大多数现代浏览器都支持一个本地的JSON.parse
方法来实现这一点。如果你的目标浏览器不是这样,你可以使用Douglas Crockford提供的实现(滚动到底部)
在任何情况下,如果可以避免,请不要使用eval
更新(关于eval
):
如各国所述:
JSON是对象文本的子集
由于JSON是
作为JavaScript的子集,可以使用它
用一种没有混乱或烦躁的语言
这在实践中意味着什么?好吧,这意味着任何有效的JSON对象也是有效的JS代码(在技术术语中:它是一个有效的JS表达式,计算结果为对象文本)。因此,您可以将JSON粘贴到文件中,并告诉您的浏览器将其作为JavaScript加载,这样做不会出现任何错误或警告(当然JavaScript“实际上不会做任何事情,因为它只是对象的表示,而不是过程代码)
既然我们已经确定JSON可以解释为JavaScript,那么它也可以传递给。让我们看看关于eval
:
eval函数的参数是一个
如果字符串表示
表达式,eval计算
表情
解析JSON(将字符串转换为JavaScript对象)
如果您调用的代码<代码> Value>(代码)>包含数据(例如,数组:<代码>)[1, 2, 3 ] ,与代码相反,您应该考虑切换到JSON,这允许字符串使用JavaScript语法的子集来表示数据。 上面的解释可能不是最好的,但它确实说明了发生了什么:JSON可以被看作是一个JS表达式。
eval
接受一个表示JS表达式的字符串(在本例中,是一个包含JSON的字符串),对其求值并返回结果。它就像一个迷你编译器,您可以在运行时将代码提供给它,它将为您运行代码并返回结果。在这种情况下,结果将是一个JS对象(如前所述,JSON是表示对象的有效JS表达式)
所以如果你有
var json = '{"foo": "bar", "answer": 42}';
var object1 = eval(json);
var object2 = { foo: "bar", answer: 42 };
然后
object1
和object2
将是两个不同但相同的对象。JSON是java脚本代码
jsonData=eval(“+data+”);
eval()
函数正在执行java脚本代码