njs + json + \uXXXX
Andrey Oktyabrskiy
ano на bestmx.net
Чт Фев 14 21:07:07 UTC 2019
On 14.02.2019 18:38, Dmitry Volyntsev wrote:
> On 14.02.2019 17:57, Andrey Oktyabrskiy wrote:
>> Возможно ли в NJS получить строку
>> {"text":"\u0431\u0435\u043b\u0438\u0431\u0435\u0440\u0434\u0430"}
>>
>> из такого JSON'a
>> {"text":"белиберда"}
>>
>> JSON.parse прекрасно распознаёт такой JSON, а вот обратное
>> преобразование как сделать, не соображу никак.
>>
>> >> s =
>> JSON.stringify(JSON.parse('{"text":"\u0431\u0435\u043b\u0438\u0431\u0435\u0440\u0434\u0430"}'))
>>
>> '{"text":"белиберда"}'
>
> А какую задачу вы пытаетесь решить?
Пытаюсь использовать чужой API, который принимает только такие строки.
Требование выглядит странным, но повлиять на это поведение я никак не могу.
> Ничего готово не припоминаю, но можно, в качестве развлечения, написать
> такую функцию
Я думал, может со stringify какой-то фокус можно сделать...
> : function uniсode_escape(s) {
> : var codes = [];
> : for (var i = 0; i < s.length; i++) {
> : codes.push(s.codePointAt(i).toString(16).padStart(4, '0'));
> : };
> : return '\\u'+codes.join('\\u');
> : }
> :
> : >> unicode_escape('белиберда')
> : '\\u0431\\u0435\\u043b\\u0438\\u0431\\u0435\\u0440\\u0434\\u0430'
> : JSON.parse("\"" + unicode_escape('белиберда') + "\"")
> : 'белиберда'
Спасибо!
Для такой экзотической задачи очень даже адекватное решение.
Подробная информация о списке рассылки nginx-ru