源格式化程序 (JSON)

JsonFeeds 示例演示如何使用自定义 SyndicationFeedFormatterDataContractJsonSerializer 来序列化 JavaScript 对象符号 (JSON) 格式的 SyndicationFeed 类的实例。

示例的体系结构

本示例实现一个从 JsonFeedFormatter 继承的名为 SyndicationFeedFormatter 的类。 JsonFeedFormatter 类依靠 DataContractJsonSerializer 来读写 JSON 格式的数据。 在内部,格式化程序使用名为 JsonSyndicationFeedJsonSyndicationItem 的一组自定义数据协定类型来控制由序列化程序生成的 JSON 数据的格式。 对于最终用户,这些实现的详细信息是不可见的,从而可以针对标准 SyndicationFeedSyndicationItem 类进行调用。

编写 JSON 源

通过与 JsonFeedFormatter 一起使用 DataContractJsonSerializer(在本示例中实现),可实现编写 JSON 源,如下面的示例代码所示。

//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 版本的解决方案,请按照 Building the Windows Communication Foundation Samples中的说明进行操作。

  3. 要使用单机配置或跨计算机配置来运行示例,请按照运行 Windows Communication Foundation 示例中的说明进行操作。