DataContractJsonSerializer не десериализует HTML-объекты - PullRequest
2 голосов
/ 01 марта 2011

Я получаю данные от веб-службы, и некоторые строки содержат html-сущности, например:

{"prop": "htmlentity - é"}

é не анализируется в.

У меня двоякий вопрос:

  1. Это вообще должно произойти?
    Я просмотрел спецификацию JSON как мог, но не смог найти никакой ссылкив html сущности.
  2. Как правильно сделать это с DataContractJsonSerializer? , если есть правильный путь?

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Вы можете вызвать HttpUtility.HtmlDecode для строк, содержащих сущности HTML.

Это не работа DataContractJsonSerializer, так как спецификация JSON требует экранирования только кавычки, обратного солидуса и управляющих символов.

0 голосов
/ 01 марта 2011

Это не проблема сериализации JSON, это будет связано с тем, что данные отправляются через Интернет.

Сериализация не кодирует автоматически объекты HTML.
См:

var orig = new MyObj {prop = "htmlentity - é"};

var ser = new DataContractJsonSerializer(typeof(MyObj));

var ms = new MemoryStream();

ser.WriteObject(ms, orig);

var serialized = Encoding.UTF8.GetString(ms.GetBuffer(), 0, (int)ms.Length);

MessageBox.Show(serialized); // {"prop":"htmlentity - é"}

Если у вас есть контроль над веб-службой, вы можете проверить это на стороне сервера. Если нет, обратитесь к поставщику веб-службы.

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