Поделиться через


Модуль форматирования веб-канала (JSON)

В этом образце показано, как сериализовать экземпляр класса SyndicationFeed в формат нотации объектов JavaScript (JSON) с помощью пользовательских объектов SyndicationFeedFormatter и DataContractJsonSerializer.

Архитектура образца

В данном образце реализуется класс с именем JsonFeedFormatter, унаследованный от класса SyndicationFeedFormatter. Класс JsonFeedFormatter использует класс DataContractJsonSerializer для чтения и записи данных в формате JSON. При внутренней обработке средство форматирования использует пользовательский набор типов контрактов данных с именами JsonSyndicationFeed и JsonSyndicationItem для контроля формата данных JSON, создаваемых сериализатором. Эти сведения реализации скрыты от конечного пользователя, что позволяет делать вызовы к стандартным классам SyndicationFeed и SyndicationItem.

Написание веб-каналов JSON

Веб-канал JSON можно написать, используя класс JsonFeedFormatter (реализованный в этом образце) с классом DataContractJsonSerializer, как показано в следующем образце кода.

//Basic feed with sample data
SyndicationFeed feed = new SyndicationFeed("Custom JSON feed", "A Syndication extensibility sample", null);
feed.LastUpdatedTime = DateTime.Now;
feed.Items = from s in new string[] { "hello", "world" }
select new SyndicationItem()
{
    Summary = SyndicationContent.CreatePlaintextContent(s)
};

//Write the feed out to a MemoryStream in JSON format
DataContractJsonSerializer writeSerializer = new DataContractJsonSerializer(typeof(JsonFeedFormatter));
writeSerializer.WriteObject(stream, new JsonFeedFormatter(feed));

Чтение веб-канала JSON

Получить объект SyndicationFeed из потока данных в формате JSON можно с помощью класса JsonFeedFormatter, как показано в следующем примере кода.

//Read in the feed using the DataContractJsonSerializer

DataContractJsonSerializer readSerializer = new DataContractJsonSerializer(typeof(JsonFeedFormatter));

JsonFeedFormatter formatter = readSerializer.ReadObject(stream) as JsonFeedFormatter;

SyndicationFeed feedRead = formatter.Feed;

Настройка, построение и выполнение образца

  1. Убедитесь, что выполнены процедуры, описанные в разделе Процедура однократной настройки образцов Windows Communication Foundation.

  2. Чтобы выполнить построение версии решения для языка C# или Visual Basic .NET, следуйте инструкциям раздела Построение образцов Windows Communication Foundation.

  3. Чтобы выполнить образец на одном или нескольких компьютерах, следуйте инструкциям в разделе Running the Windows Communication Foundation Samples.

Bb943484.Important(ru-ru,VS.100).gif Примечание
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).

<диск_установки>:\WF_WCF_Samples

Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.

<диск_установки>:\WF_WCF_Samples\WCF\Extensibility\Syndication\JsonFeeds