потерять escape-символы, передающие путь в json из Xamarin Forms c # в javascript

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

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

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

"{"statusCode":"200","path":"	empUploads100650IMG_20200107_094705_5.jpg"}"

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

Всего 1 ответ


Json.parse обычно сталкивается с двумя 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":" empUploads100650IMG_20200107_094705_5.jpg"

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


Есть идеи?

10000