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

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

ex0_planet January 28 2020, 18:30:21 UTC
Можа, я не знаю, туда ноду втащить?

Или тебе, как это обычно бывает, надо отдать клиенту скрипт, который гарантированно выполнится на любой, даже самой упоротой венде и вернёт хоть какой-то результат?

Reply

aterentiev January 28 2020, 18:31:15 UTC
Бггг
Угадал :)

Reply

ex0_planet January 28 2020, 18:32:18 UTC
Интернеты говорят что в powershell есть какой-то json.

Reply

aterentiev January 28 2020, 21:48:46 UTC
Хм. Гляну

Reply


Leave a comment

Up