2011-04-11 44 views
8

tôi có một mảng json mà tôi muốn chuyển đổi thành một đồng bằng mảng javascript:convert json mảng javascript mảng

Đây là mảng json tôi:

var users = {"0":"John","1":"Simon","2":"Randy"} 

Làm thế nào để chuyển đổi nó thành một javascript đơn giản mảng như sau:

var users = ["John", "Simon", "Randy"] 
+0

Tôi cũng thấy điều này hữu ích: http://stackoverflow.com/questions/4375537/convert-json-string-to-array-of-json-objects-in-javascript –

+0

Có thể cho tôi biết đây là json không mảng hoặc đối tượng json? – anil

+0

@anil Điều này có thể giúp: http://stackoverflow.com/a/12289961/386579 –

Trả lời

10

users là đối tượng JS (không phải JSON). Nhưng ở đây bạn đi:

var users_array = []; 
for(var i in users) { 
    if(users.hasOwnProperty(i) && !isNaN(+i)) { 
     users_array[+i] = users[i]; 
    } 
} 

Edit: yếu tố Insert ở đúng vị trí trong mảng. Cảm ơn @RoToRa.

Có thể dễ dàng hơn khi không tạo loại đối tượng này ngay từ đầu. Nó được tạo ra như thế nào?

+0

Mảng json này được tạo động với mã hóa Zend_Json ::, nhưng phản hồi được chuyển về hàm js, chấp nhận một mảng javascript đơn giản . –

+2

@dskanth: Nếu bạn không làm bất cứ điều gì lạ mắt, hãy sử dụng hàm gốc 'json_encode'. Nó sẽ chỉ biến các mảng kết hợp thành các đối tượng JSON và các mảng được lập chỉ mục thành các mảng. –

+4

Cẩn thận, mã của bạn có thể không gán các giá trị cho các chỉ mục chính xác, bởi vì bạn đang giả định các thuộc tính đối tượng được sắp xếp lặp lại. 'if (! isNaN (+ i)) {users_array [+ i] = người dùng [i]}' có thể tốt hơn. – RoToRa

4

Just for fun - nếu bạn biết chiều dài của mảng, sau đó những điều sau đây sẽ làm việc (and seems to be faster):

users.length = 3; 
users = Array.prototype.slice.call(users); 
+1

+1 gần gấp đôi. Đẹp và ngắn. – Christoph

0

Vâng, đây là một giải pháp Jquery + Javascript, đối với những ai quan tâm:

var user_list = []; 

$.each(users, function(key, value) { 
    user_list.push(value);  
}); 

console.log(user_list);