2013-08-06 44 views
6

Tôi đang được cung cấp một số JSON tôi cần phải chuyển qua để xuất các phần tử. Vấn đề là phần này của nó được cấu trúc khác nhau. Thông thường, tôi sẽ chỉ lặp qua các yếu tố như sau:Làm cách nào để trích xuất khóa từ đối tượng JSON khóa/giá trị?

var json = $.parseJSON(data); 
json[16].events.burstevents[i] 

Nhưng tôi không thể làm điều đó với JSON bên dưới vì chúng là cặp giá trị chính. Làm cách nào để trích xuất chỉ dấu thời gian unix từ JSON bên dưới? (Ví dụ: 1369353600000,0, 1371600000000,0 vv)

{"16": { 
    "events": { 
     "burstevents": { 
      "1369353600000.0": "maj", "1371600000000.0": "maj", "1373414400000.0": "maj", "1373500800000.0": "maj", "1373673600000.0": "maj" 
     }, 
     "sentevents": { 
      "1370736000000.0": "pos", "1370822400000.0": "pos", "1370908800000.0": "pos" 
     } 
    } 
    } 
} 
+1

'$ .map ({" 123 ": 345}, hàm (v, k) {return k;})' -> '['123']' – AdamKG

+0

'_.map ({" 123 ": 345 }, hàm (v, k) {return k;}) '->' ['123'] 'http://underscorejs.org/#map – cgTag

Trả lời

9

Bạn có thể duyệt qua các phím bằng cách sử dụng từ khóa in.

var json = $.parseJSON(data); 
var keys = array(); 
for(var key in json[16].events.burstevents) 
{ 
    keys.push(key); 
} 

Bạn có thể làm điều đó với jQuery

var json = $.parseJSON(data); 
var keys = $.map(json[16].events.burstevents,function(v,k) { return k; }); 

Bạn có thể sử dụng JavaScript Object

var json = $.parseJSON(data); 
var keys = Object.keys(json[16].events.burstevents); 
+0

Câu trả lời hay :) – AzzyDude

1

Là một thay thế chúng ta có thể làm điều này:

var keys=[]; 
     var i=0; 
     $.each(json, function(key, value) { 
       console.log(key, value); 
       keys[i++]=key; 
     }); 

hoặc có thể tổ khác .each cho bộ hơn về chủ chốt, các cặp giá trị.

Các vấn đề liên quan