2014-09-12 40 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 
}