JSON.stringify() какой-то подземный стук...

Jan 28, 2020 14:55

Господа или дамы, знакомые со всякими веб-делами есть?

Безобразие происходит в JScript в WSH (не спрашивайте почему, так получилось). Пишу скрипт, работающий с JSON-запросами под виндой. Столкнулся с непонятным.

Имею простой тест:

var X = JSON.stringify(["123","456"]);
WScript.Echo(X);

Ожидаю вывод в квадратных скобках, т.е.:

["123","456 ( Read more... )

Программизмы

Leave a comment

Comments 12

ex0_planet January 28 2020, 15:23:38 UTC
Я js видел только на картинке, но предположу, что hashmap не сохраняет порядок, поэтому результат возвращается в виде индекса:

0 -> 123
1 -> 456

и так далее

Лечить, очевидно как -нибудь вроде X.values() или как там получить список значений из hashmap'а.

Reply

aterentiev January 28 2020, 16:18:44 UTC
Ожидая, что .stringify() выдаст обьект "как есть", т.е. массив где массив и хеш-подобные списки для свойств, очень странно увидеть вместо массива, по сути, пронумерованный список (хотя, массив - это оно и есть).

Просто сервер ожидает в одном месте получить массив, а получает вот это вот с пронумерованными парами номер-значение и отказывается брать данные.

У меня есть workaround писать JSON-запрос руками в виде текста, но это крайне неудобно...

Reply

ex0_planet January 28 2020, 18:20:51 UTC
А, меня переклинило и я подумал что там парсер, которому важен и стабильный порядок, и индексированный доступ зачем-то. Впрочем, неважно. Я тут проверил на двух с половиной реализациях js которые были под рукой, и таки да, все отдают ["123","456"].

Походу ввенде как обычно собственное мнение как правильно. Или оно не догадывается что [] тоже валидный json.

Reply

aterentiev January 28 2020, 18:26:36 UTC
Оно не ругается, но "интерпретирует по-своему". Это JScript, он устарел, но чего-либо более современного для скриптовых REST-запросов я еще не нашел.

Reply


sakurovskiy January 28 2020, 18:41:40 UTC
Это JS! Беги глупец!

Reply

aterentiev January 28 2020, 19:53:27 UTC
Я в это регулярно вступаю с конца 90х, меня таким не испугать ;) don't worry

Reply

sakurovskiy January 29 2020, 06:36:44 UTC
Не люблю жс просто.

Reply


masterspammer January 29 2020, 02:42:58 UTC
Где-то в "глубине души" ["123","456"] и есть {0:"123", 1:"456"}... вопрос - отчего JSON.stringify не определяет, что тут имелось в виду.

Reply


Leave a comment

Up