Javascript 这是解析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

我正在看另一个解析JSON的开发人员代码。我真的看不出它是怎么工作的,或者它是不是一个好主意

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脚本代码