2011-04-11 13 views
8

Mam tablicy json, że chcę, aby przekształcić zwykły tablica javascript:nawrócony json tablica do javascript tablicy

To jest mój tablicy json:

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

Jak przekonwertować go na zwykły javascript tablica tak:

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

Znalazłam też to przydatne: http://stackoverflow.com/questions/4375537/convert-json-string-to-array-of-json-objects-in-javascript –

+0

Czy każdy mi to json tablica lub obiekt json? – anil

+0

@anil To może pomóc: http://stackoverflow.com/a/12289961/386579 –

Odpowiedz

10

users jest już przedmiotem js (nie JSON). Ale tutaj przejść:

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

Edit: elementy wstaw na odpowiedniej pozycji w tablicy. Dziękujemy @RoToRa.

Być może łatwiej jest nie tworzyć tego rodzaju obiektów w pierwszej kolejności. Jak jest tworzony?

+0

Ta tablica json jest tworzona dynamicznie z Zend_Json :: encode, ale odpowiedź jest przekazywana z powrotem do funkcji js, która akceptuje zwykłą tablicę javascript . –

+2

@dskanth: Jeśli nie robisz nic nadzwyczajnego, użyj natywnej funkcji 'json_encode'. Przekształca tablice asocjacyjne tylko w obiekty JSON, a indeksy numeryczne w tablice. –

+4

Ostrożnie, twój kod może nie przypisać wartości do właściwych indeksów, ponieważ zakładasz, że właściwości obiektu są sortowane iteracyjnie. 'if (! isNaN (+ i)) {users_array [+ i] = users [i]}' może być lepsze. – RoToRa

4

Tak dla zabawy - jeśli znasz długość tablicy, a następnie dodaje zadziała (and seems to be faster):

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

+1 prawie dwa razy szybciej. Ładne i krótkie. – Christoph

0

Cóż, tutaj jest rozwiązanie Jquery + Javascript dla tych, którzy są zainteresowani:

var user_list = []; 

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

console.log(user_list); 
Powiązane problemy