2014-09-12 72 views
0

我正在使用JavaScript,并且我有一个来自Twitter的信息的json文件。我没有问题,使用类似于:var content = data.text;,所以我可以使用它来更改div使用innerHTML. 现在,我还试图检查是否存在某个哈希标签(以激发视频)。现在,我有一个名为data的变量,它使用.getJSON方法存储来自JSON文件的信息。检查json文件中的对象数组中的值

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

这是'.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

无一个你尝试过的例子,我们无法真正帮助你。但是,这是一个关于如何去做的线索。 http://stackoverflow.com/questions/4935632/how-to-parse-json-in-javascript – marsh 2014-09-12 18:09:05

+0

这不是一个有效的JSON文件,在这种情况下需要以'}开始并以'}结尾'。一旦解决了,“将测试值(两个元素)作为字符串返回”是指什么?级联?作为一个数组? – 2014-09-12 18:14:39

+0

是什么?你完全改变了问题 – daviestar 2014-09-12 18:55:34

回答

0

好的,这个答案将略过一些细节,因为你所要求的是一个相当广泛的主题来充分解释。这应该给你足够的线索,也是一个可行的答案。

首先,你需要给JSON对象名称,以便您可以参考它,像这样:

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

或者,如果你是从API使用jQuery获得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个hashtag或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 
}