DataContractJsonSerializer 示例

本文介绍 JsonSerialization 示例

注释

此示例适用于 DataContractJsonSerializer. 对于涉及序列化和反序列化 JSON 的大多数方案,我们建议 在 System.Text.Json 命名空间中使用 API。

DataContractJsonSerializer 支持与 DataContractSerializer 相同的类型。 编写异步 JavaScript 和 XML(AJAX)样式 Web 应用程序时,JSON 数据格式特别有用。 Windows Communication Foundation (WCF) 中的 AJAX 支持经过优化,通过 ScriptManager 控件与 ASP.NET AJAX 配合使用。 有关如何将 Windows Communication Foundation (WCF) 与 ASP.NET AJAX 配合使用的示例,请参阅 AJAX 示例

本示例的设置过程和生成说明位于本主题末尾。

此示例使用 Person 数据协定来演示序列化和反序列化。

[DataContract]
class Person
{
    [DataMember]
    internal string name;

    [DataMember]
    internal int age;
}

若要将Person类型的实例序列化为 JSON,请先创建Person的实例,然后使用WriteObject方法将 JSON 数据写入流。

Person p = new Person();
//Set up Person object...
MemoryStream stream1 = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person));
ser.WriteObject(stream1, p);

内存流包含有效的 JSON 数据。

{"age":42,"name":"John"}

此示例演示如何从 JSON 数据反序列化为对象。 然后重绕流并调用 ReadObject

Person p2 = (Person)ser.ReadObject(stream1);

检查 p2 对象会显示 JSON 数据已正确反序列化。

设置、生成和运行示例

  1. 构建解决方案JsonSerialization.sln,如构建 Windows Communication Foundation 示例中所述。

  2. 运行生成的控制台应用程序。