Невозможно преобразовать индексированный массив строк назад и вперед, используя JSON - PullRequest
0 голосов
/ 15 июня 2011
var a =[]
a["sheet1"] = "hi"
var b = JSON.stringify(a);
var c =JSON.parse(b)

Теперь c["sheet1"] возвращает undefined

Есть ли обходной путь для этого?Это ошибка в JSON для JS?

РЕДАКТИРОВАТЬ:

Проблема с использованием объекта, у меня есть строки, такие как "abc".Так что если нравится var k = "abc"a={}.Я не могу позвонить a.k.Возвращает

TypeError: XML filter is applied to non-XML value ({})

Я не могу использовать a.abc, потому что "abc" приходит как строка откуда-то.

Ответы [ 3 ]

3 голосов
/ 15 июня 2011

Не используйте массив. Используйте объект.

Изменение

var a = [];

до

var a = {};

Когда вы конвертируете массив в JSON, будут кодироваться только числовые индексы. Все остальное будет отброшено.

2 голосов
/ 15 июня 2011

Вы создаете массив, но затем используете его как объект. Это возможно, поскольку массив также является объектом, но при сериализации включается только содержимое массива, а свойства объекта игнорируются.

Строка в b будет [], а результатом в c будет пустой массив, а не undefined.

Вместо этого создайте объект, и он будет работать:

var a = {};
1 голос
/ 15 июня 2011

В javascript нет «индексированных массивов». Есть массивы и объекты. У вас есть массив, и он не будет содержать никаких индексов:

enter image description here

Если вы хотите что-то подобное, вы должны использовать объект: var a = {}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...