在 .NET 3.5 中,提供了一个新的类,用于 JSON 的序列化和反序列化。该类全称为:
System.Runtime.Serialization.Json.DataContractJsonSerializer
真长!要使用这个类,必须引入:
System.Runtime.Serialization
System.ServiceModel.Web
感觉有些高深莫测了,倒是挺符合微软一贯的风格。那就尽量写简单一点吧,首先从类定义开始:
准备数据:
下面开始序列化,使用方法 WriteObject(Stream, Object):
挺郁闷的,为什么不提供一个 TextWrite 的流呢?这样就可以基于 StringBuilder 建一个 StringWrite 的流,直接写到 StringBuilder 里,免得这么七折八弯的。
试试另外一个重载 WriteObject(XmlWrite, Object):
果然是一个 XML 文件,真不知道微软是怎么想的,我要序列化为一个 XML,用得着费这么大周折吗?况且,弄一个 XML 文件传到浏览器中,单解析这个 XML 文件让它正常显示在各种不同的浏览器上就是一项不小的工作。其实我想要的是一个简单的方法,如 WriteObject(Object),然后返回一个 JSON 格式的 string。看来只能自己再封装一下了。
下面看反序列化,接着 WriteObject(Stream, Object) 那一段程式继续往下写:
反序列化倒还算是方便。呵呵,将就着用吧。