2014-02-21 8 views
1

Я хотел бы использовать stringify для кодирования моего яваскрипта массива в JSONstringify не работает с моим яваскриптом массивом

params["margin_left"] = "fd"; 
params["text"] = "df"; 
params["margin_to_delete"] = "df"; 

console.info(params); 

возвращает (Chrome консоль):

[margin_left: "fd", text: "df", margin_to_delete: "df"] 

, но когда я звоню:

console.info(JSON.stringify(params)); 

Я получаю

[] 

Кто-нибудь знает почему?

Thanx

+4

Убедитесь, что вы определяете параметры как объект 'var params = {};', по его внешности ошибка может заключаться в том, что «params» определяется как массив (таким образом, когда stringified является пустым, поскольку атрибуты, добавленные через 'params [" margin_left "]' не рассматриваются, а только фактические значения массива) – Carl

+1

Это объект. [И ваш код работает] (http://jsfiddle.net/tR8jT/1/), предполагая, что вы правильно определяете 'params'. – Andy

+0

http://jsfiddle.net/ARZX5/ – enyce12

ответ

1

Просто, чтобы сделать мой оригинальный комментарий ответ.

Проблема: «params» определяется как массив, т.е.

var params = []; 
params["margin_left"] = "fd"; 
params["text"] = "df"; 
params["margin_to_delete"] = "df"; 

Это означает, что когда stringify, если вызвано, оно возвращает то, что у него есть, - пустой массив. (javascript не поддерживает ассоциативные массивы, то, что на самом деле делает вышеупомянутый код, заключается в добавлении дополнительных атрибутов к объекту массива, которые существуют, хотя они будут проигнорированы для целей итерации/стягивания).

Создав объект , все должно работать как ожидалось

var params = {}; 
params["margin_left"] = "fd"; 
params["text"] = "df"; 
params["margin_to_delete"] = "df"; 

С этого момента, когда вызывается stringify, javascript знает свои атрибуты, которые вы хотите.

+0

Thanx, это работает! – Paul

0

Carl Как указал, вы должны определить, как Params объекта

уаг Params = {};

Затем вы можете использовать stringify для преобразования JSON строки, например:

console.info(JSON.stringify(params)); 
Смежные вопросы