Экранируйте специальные символы JSON на странице Razor, чтобы JSON .parse можно было использовать с программой восстановления даты - PullRequest
3 голосов
/ 08 июля 2020

Я использую Asp. Net Core 3.1 MVC и пытаюсь сериализовать модель на странице Razor, но мне нужно, чтобы она была закодирована, чтобы она работала с JSON .parse, поэтому что я могу использовать средство восстановления даты для преобразования строк даты в объекты даты. Json .Serialize записывает json таким образом, чтобы его можно было использовать без JSON .parse, поэтому, если вы заключите его в одинарные кавычки, чтобы сделать его строкой, специальные символы не будут правильно экранированы и JSON .parse выдает ошибки, когда встречаются такие символы, как "\".

// Model definition { "myField": "abc\\def" }
<script type="text/javascript">
   var data = '@Json.Serialize(Model)',
       json = JSON.parse(data, myDateReviver);
</script>

Я нашел обходной путь, которого я бы хотел избежать, если это вообще возможно.

// Model definition { "myField": "abc\\def" }
<script type="text/javascript">
   var data = JSON.stringify(@Json.Serialize(Model)),
       json = JSON.parse(data, myDateReviver);
</script>

Есть ли правильный способ строкового кодирования результата @ Json .Serialize, чтобы он был совместим с JSON .parse?

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