потерять escape-символы, проходящие путь в json из форм Xamarin c# в javascript - PullRequest
0 голосов
/ 24 марта 2020

У меня есть приложение Xamarin Forms, которое вызывает javascript и отправляет в качестве параметра строку JSON, которая содержит путь. Когда он покидает c#, обратные косые черты дважды экранируются следующим образом:

"myreturnfunc('', '{\"statusCode\":\"200\",\"path\":\"\\\\temp\\\\Uploads\\\\100650\\\\IMG_20200107_094705_5.jpg\"}');"

, но при попадании в myreturnfun c остаются только одиночные косые черты:

"{"statusCode":"200","path":"\temp\Uploads\100650\IMG_20200107_094705_5.jpg"}"

который терпит неудачу на JSON .parse. Что мне нужно сделать, чтобы позволить сбежавшим пройти? Я также вызываю этот метод из другой функции javascript, и при вызове оттуда он проходит в правильном формате: "{"path":"\\temp\\Uploads\\100650\\IMG_20200107_094705_5.jpg","statusCode":"200"}"

1 Ответ

0 голосов
/ 24 марта 2020

Json.parse обычно встречает два экранирования, когда параметр json.parse содержит символы перехода, первый - экранирование самой строки, а второй - экранирование фактического объекта js.

например, ваша строка \"path\":\"\\\\temp\\\\Uploads\\\\100650\\\\IMG_20200107_094705_5.jpg\" выше

Первый синтаксический анализатор извлекает строки сначала думает \ экранирует второй \, а третий \ экранирует четвертый \, то есть фактический выходная строка: "path":"\\temp\\Uploads\\100650\\IMG_20200107_094705_5.jpg" (может быть проверено с помощью console.log)

Затем, когда формально преобразуется в объект js, происходит еще один выход, конечный результат будет "path":"\temp\Uploads\100650\IMG_20200107_094705_5.jpg"

Итак, если вы хотите один \ в js объекте, вам нужно четыре \ в json строке

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