C # десериализовать JSON HTML-строку - PullRequest
1 голос
/ 15 июля 2011

Я пытаюсь десериализовать объект JSON в c #, моя проблема в том, что одно из полей может содержать html-текст (я планирую санацию его позже).

Я использую объект JavaScriptSerializer для десериализации, но получаю «Недопустимый объект, переданный с ошибкой« »(из JavaScriptSerializer). Если я передаю простой текст для того же поля, оно работает нормально, и другие поля (включая дату и массив) в объекте также правильно десериализуются, поэтому создается впечатление, что html вызывает его.

Я использую JSON.stringify для сериализации объекта Javascript и передаю его на свою страницу через jQuery.

Есть ли что-то, что я должен сделать, чтобы передать строку, содержащую html? Я пытался заключить его в кавычки, но это не помогло.

В качестве примера строки, которая принимается по сравнению с тем, что выдает ошибку: «Тест» в порядке, в то время как

"<div style="text-align: center;">Test</div>" нет. Странно, но теги <span> тоже подойдут.

Ответы [ 4 ]

2 голосов
/ 15 июля 2011

Можете ли вы кодировать HTML с помощью функции javascript escape() перед сериализацией.

2 голосов
/ 15 июля 2011

Возможно, вам придется кодировать URIComponent в javascript, а затем HttpServerUtility.UrlDecode в .NET

0 голосов
/ 06 апреля 2017

просто сделайте замену вот так jsonString.Replace(@"=""\""",@"=\""\""").Replace(@"\""""",@"\""\""").Replace(@"=""""", @"=\""\""")

0 голосов
/ 15 июля 2011

Вы не можете передавать символы HTML, которые не закодированы по соображениям безопасности. Вы можете переопределить это в MVC.Net при применении уровня функций, если вы чувствуете себя в безопасности в своем источнике.

...