检查json文件中对象数组内的值

时间:2014-09-12 18:07:14

标签: javascript arrays json object

我正在使用JavaScript,我有一个带有Twitter信息的json文件。我使用var content = data.text;之类的内容访问它是没有问题的,因此我可以使用div来更改innerHTML. 现在,我还试图检查是否存在某些#标签(以触发视频)。现在,我有一个名为data的变量,它使用.getJSON方法存储来自JSON文件的信息。

我可以使用time_zone轻松访问data.user.time_zone之类的属性,但是像标签这样的东西在对象数组中,我不知道如何访问,例如'text'。

这是'.json'(我编辑了一些信息,因为它太长了)。

{
"user": {
    "following": null,
},
"in_reply_to_screen_name": null,
"entities": {
    "user_mentions": [],
    "urls": [],
    "trends": [],
    "symbols": [],
    "hashtags": [
        {
            "text": "fuego",
            "indices": [
                25,
                31
            ]
        },
        {
            "text": "primaLED",
            "indices": [
                32,
                41
            ]
        }
    ]
},
"contributors": null,
}

我找到了一些“解决方案”,但没有一个正在运行,我是编程的新手,所以我真的迷失了。

1 个答案:

答案 0 :(得分:0)

好的,这个答案将略过一些细节,因为你所要求的是一个相当广泛的主题,可以完全解释。这应该会给你很多线索,也是一个有效的答案。

首先,您需要为JSON对象指定一个名称,以便您可以引用它,如下所示:

var json = {
    "entities": {
        "hashtags": [
            {
             "text": "fire",
             "indices": [
                        25,
                        31
                    ]
                },
                {
              "text": "water",
              "indices": [
                        32,
                        41
                    ]
                }
        ]
    }
};

或者,如果您从使用jQuery的API获取JSON,请执行以下操作:

var json;
$.getJSON('http://www.domain.com/api', function(data) {
    json = data;
});

然后,您需要查看什么是对象{},以及JSON中的数组[]。在下面的例子中,你会看到我用'点符号'遍历一个对象,即。 json.entries.hashtags。然后我遍历一个数组,即。 for(...)并创建索引i。然后我可以使用该索引来完成遍历,即。 json.entries.hashtags[i]

var array = [];
for(var i = 0, hashtag; hashtag = json.entities.hashtags[i]; i++) {
    array.push(hashtag.text);
}
console.log(array);  // ["fire", "water"]

console.log(array[0]); // "fire"

console.log(array[1]); // "water"

在这里,我循环遍历JSON中的hashtags数组,并选择text的值并创建我自己的数组。这通常是最好的方法,特别是如果JSON不受您的控制 - 它可能包含1个主题标签,或1000个。

专业提示:如果我只想访问其中一个属性而不是循环,我可以这样做:

console.log(json.entities.hashtags[0].text); // "fire"
console.log(json.entities.hashtags[1].text); // "water"

修改

以下是测试某个标签并对其进行操作的方法:

var array = [];
var fire = false;
for(var i = 0, hashtag; hashtag = json.entities.hashtags[i]; i++) {
    if(hashtag.text === "fire") {
        fire = true;
    }
}
if(fire) {
    // do stuff
}