【问题标题】:JSON loop a multidimensional array to with node.jsJSON循环一个多维数组到node.js
【发布时间】:2015-10-11 10:36:34
【问题描述】:

阅读了不同的方法后,请耐心等待我尝试解释。

我正在尝试从 twitch api 检索数据并将 user.name 结果循环到可能在对象内的数组。我正在使用 nodejs,所以它必须是 javascript。

到目前为止,当我运行以下命令时,我得到了一个不错的 json 响应。

var request = require('request');

    request({url: 'https://api.twitch.tv/kraken/channels/twitch/follows?limit=3'}, function(err, res, json) {
        if (err) {
            throw err;
        }

        console.log(json);

    });

然后记录与访问https://api.twitch.tv/kraken/channels/twitch/follows?limit=3的位置相同

或者更好的可视化为

现在我想选择以下 -> 用户 -> 名称对象。更重要的是,在响应中循环每个用户 -> 名称。

我认为我需要将字符串转换为对象,所以我尝试了

    var obj = JSON.parse(json);

但这仅返回树中的前 {3} 个对象。所以我继续尝试

var request = require('request');

    request({url: 'https://api.twitch.tv/kraken/channels/twitch/follows?limit=3'}, function(err, res, json) {
        if (err) {
            throw err;
        }

        for (var i=0; i<json.length; i++) {

        var obj = JSON.parse(json.follows[i].user.name);
        console.log(obj);

        }

    });

然后它返回

TypeError: Cannot read property '0' of undefined

出于测试目的,我也摆脱了循环,只让1 返回一点信息。尝试了多个重新安排呼叫的实例后,我总是收到错误或“未定义”的回复。

似乎没有任何效果,我什至以正确的方式解决这个问题?

【问题讨论】:

    标签: javascript arrays json node.js object


    【解决方案1】:

    循环 json.followers.length - 不是 json.length - json 是一个对象,并且对象没有长度:

    for (var i=0; i<json.follows.length; i++) {
    

    【讨论】:

    • 如此简单却如此有效。
    • 我似乎得到 TypeError: Cannot read property 'length' of undefined 尝试这个时。
    • 完整编辑:for (var i=0; i
    • 感谢您的帮助,我将以下问题标记为已接受的答案。不确定程序,但额外的线路对我有帮助,尽管它几乎是一样的。希望这没问题,我赞成你的问题。
    【解决方案2】:

    由于这里的 json 是一个对象,我们应该使用 for-in 虽然没有长度属性。但是这里 json.follows 是一个数组。所以我们应该使用for循环。

    var len = json.follows.length;
    for (var i=0; i< len; i++) {
        console.log(json.follows[i].user.name);
    }
    

    【讨论】:

    • follows 是一个数组 - 对数组使用常规的 for 循环。
    • 是的...对于后续我们可以使用常规的 for 循环。但是对于我们应该使用 for..in 的对象 json。我会更新我的答案。
    • 我得到 TypeError: Cannot read property 'length' of undefined,和上面的答案一样。不确定这是怎么回事?
    • 但我测试过,它工作正常。你可以做一个 console.log(json) 并检查输出是什么,它是否包含“跟随”?
    • 是的,我需要包含 obj = JSON.parse(json);然后解决了这个问题。非常感谢你:)
    【解决方案3】:

    假设你做var obj = JSON.parse(json);

    for (var j = 0; j < obj.follows.length; j++) {
        var thisName = jsonObj.follows[j].user.name;
        console.log(thisName);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      相关资源
      最近更新 更多