2013-03-05 211 views
7

這是我從foursquare得到的JSON的一部分。JQuery從JSON數組中獲取數據

JSON

tips: { 
    count: 2, 
    groups: [ 
    { 
     type: "others", 
     name: "Tips from others", 
     count: 2, 
     items: [ 
     { 
      id: "4e53cf1e7d8b8e9188e20f00", 
      createdAt: 1314115358, 
      text: "najjači fitness centar u gradu", 
      canonicalUrl: "https://foursquare.com/item/4e53cf1e7d8b8e9188e20f00", 
      likes: { 
       count: 2, 
       groups: [ 
       { 
        type: "others", 
        count: 2, 
        items: [] 
       }], 
       summary: "2 likes" 
      }, 
      like: false, 
      logView: true, 
      todo: { 
       count: 0 
      }, 
      user: { 
       id: "12855147", 
       firstName: "Damir", 
       lastName: "P.", 
       gender: "male", 
       photo: { 
        prefix: "https://irs1.4sqi.net/img/user/", 
        suffix: "/AYJWDN42LMGGD2QE.jpg" 
       } 
      } 
     }, 
     { 
      id: "4e549e39152098912f227203", 
      createdAt: 1314168377, 
      text: "ajd da vidimo hocu li znati ponoviti", 
      canonicalUrl: "https://foursquare.com/item/4e549e39152098912f227203", 
      likes: { 
       count: 0, 
       groups: [] 
      }, 
      like: false, 
      logView: true, 
      todo: { 
       count: 0 
      }, 
      user: { 
       id: "12855147", 
       firstName: "Damir", 
       lastName: "P.", 
       gender: "male", 
       photo: { 
        prefix: "https://irs1.4sqi.net/img/user/", 
        suffix: "/AYJWDN42LMGGD2QE.jpg" 
       } 
      } 
     }] 
    }] 
} 

我需要得到最後一個技巧文本,則用戶誰寫的和日期時,他寫道/張貼。

用戶:達米爾P.

日期:1314115358

文本:najjači健身辛塔爾ü漸亮

我試着用JQuery的和這個作品來獲取非 - 陣列值:

$.getJSON(url, function(data){ 
    var text= data.response.venue.tips.groups.items.text; 
    alert(text); 
}); 

但它不適用於數組。

結果:Uncaught TypeError:無法讀取未定義的屬性「文本」。

此外我嘗試與$。每個,但沒有效果。

$.getJSON(url, function(data){ 
    $.each(data.response.venue.tips.groups.items.text, function (index, value) { 
     console.log(value); 
    }); 
}); 

我在做什麼錯了?

+0

@JanDvorak他在這裏學習。無需火焰他。 – Johan 2013-03-05 08:56:30

+0

組也是一個數組。 – SteveP 2013-03-05 08:56:39

+0

@Johan我承認,這是非常制定。儘管如此,我想要的只是將他指向正確的資源。 – 2013-03-05 08:58:36

回答

8

您需要遍歷兩個組和項目。 $.each()需要一個集合作爲第一個參數,並且data.response.venue.tips.groups.items.text嘗試指向一個字符串。數組groupsitems都是數組。

詳細的版本:

$.getJSON(url, function (data) { 

    // Iterate the groups first. 
    $.each(data.response.venue.tips.groups, function (index, value) { 

     // Get the items 
     var items = this.items; // Here 'this' points to a 'group' in 'groups' 

     // Iterate through items. 
     $.each(items, function() { 
      console.log(this.text); // Here 'this' points to an 'item' in 'items' 
     }); 
    }); 
}); 

或者更簡單地說:

$.getJSON(url, function (data) { 
    $.each(data.response.venue.tips.groups, function (index, value) { 
     $.each(this.items, function() { 
      console.log(this.text); 
     }); 
    }); 
}); 

在您指定的JSON,在最後之一將是:

$.getJSON(url, function (data) { 
    // Get the 'items' from the first group. 
    var items = data.response.venue.tips.groups[0].items; 

    // Find the last index and the last item. 
    var lastIndex = items.length - 1; 
    var lastItem = items[lastIndex]; 

    console.log("User: " + lastItem.user.firstName + " " + lastItem.user.lastName); 
    console.log("Date: " + lastItem.createdAt); 
    console.log("Text: " + lastItem.text); 
}); 

這將使你:

User: Damir P.
Date: 1314168377
Text: ajd da vidimo hocu li znati ponoviti

+0

非常好。這獲得所有的數據,但如何獲得最後一個? – Vucko 2013-03-05 09:20:08

+0

@Vucko什麼是*最後一個*? =) – 2013-03-05 09:23:25

+1

在這種情況下,文本**najjači健身centar u畢業**是最後一個。那麼最後一個'item [0] .text'或'item [1] .text'?以及如何用你的代碼來解決這個問題? – Vucko 2013-03-05 09:27:50

6

你沒有在項目上循環。試試這個:

$.getJSON(url, function(data){ 
    $.each(data.response.venue.tips.groups.items, function (index, value) { 
     console.log(this.text); 
    }); 
}); 
0

我想你需要這樣的東西:

var text= data.response.venue.tips.groups[0].items[1].text; 
0

試試這個

$.getJSON(url, function(data){ 
    $.each(data.response.venue.tips.groups.items, function (index, value) { 
     console.log(this.text); 
    }); 
}); 
+0

hello @satish我們可以使用console.log(this.text);'通過創建數組來創建每個數組? – SagarPPanchal 2014-04-21 12:43:49