2013-09-30 5 views
0

У меня есть строка json, возвращаемая к скрытому значению, и я хочу назначить его массиву javascript и распечатать каждый элемент массива.Json to string to javascript array

Json строка, возвращаемая hdn_client_windows - [ "5703", "5704"]

Javascript присваивание массива, как показано ниже.

var times = $('#hdn_client_windows').val(); 
alert(times[0]); // this printed only--> [ 
alert(times[1]); // this printed only--> " 

что я делаю неправильно?

+0

Как вы сказали, он возвращает строку JSON * - не объект массива. – Bergi

ответ

7

Вам нужно разобрать JSON в массив с JSON.parse первым:

var times = JSON.parse($('#hdn_client_windows').val()); 

Поскольку вы уже используете JQuery, это может быть хорошей идеей отложить до $.parseJSON вместо просто чтобы быть на безопасной стороне (полная совместимость со старыми браузерами):

var times = $.parseJSON($('#hdn_client_windows').val()); 
+0

Большое спасибо за быстрый ответ. – dev1234

+0

Для IE <8 используйте https://github.com/douglascrockford/JSON-js/blob/master/json2.js –

+1

@Murali: '$ .parseJSON' уже обрабатывает этот сценарий. – Jon

3

Вы должны разобрать строку первой помощи JSON.parse (более старые браузеры могут потребовать от вас, чтобы загрузить это):

var times = JSON.parse($('#hdn_client_windows').val()); 
alert(times[0]); // Will display first item 
alert(times[1]); // Will display second item 
+0

Исправьте/удалите комментарии из кода, который вы скопировали. Есть несколько вещей, которые хуже, чем вводящие в заблуждение/неправильные комментарии. – Lix

+0

@ Lix Спасибо. Обновлено. –

2

Вы можете использовать функцию jQuery parseJSON().

var str = '["5703","5704"]'; 
var parsed = $.parseJSON(str); 

Объект parsed теперь содержит массив: ["5703","5704"]

Ссылка - jQuery.parseJSON(json)

"принимает хорошо сформированную строку JSON и возвращает полученный объект JavaScript."