5

使用下面的代码,如何使用 DataContractJsonSerializer 将结果列表转换为 JSON?

ETA:我已经看到了几种通用 JSON 化对象的扩展方法,但我不确定要使用什么类型,因为这是一种匿名类型。

<Product> products = GetProductList();

var orderGroups =
 from p in products
 group p by p.Category into g
 select new { Category = g.Key, Products = g };

谢谢!

4

2 回答 2

2

您不能使用数据合同序列化程序来执行此序列化,因为匿名类型没有定义任何合同。

DataContractSerializers 使用 [DataContract] 和 [DataMember] 属性来决定哪些属性应该被序列化。但是,由于匿名类型是编译器生成的,它们不能接收属性。

[DataContract]
class Data
{
    [DataMember]
    public string Category{get;set;}
    [...]
}

事实上,我的观点是,如果您的客户端和服务器之间的接口是通过匿名类型定义的,那么您就做错了。

但是,您当然可以使用另一个序列化程序来执行此任务,但我不知道任何没有任何注释的递归序列化任何公共属性。;)

编辑:事实上,我确切地知道您可以使用什么将任意(因此是匿名的)类序列化为 json。使用奇妙的 Json.NET 库。

于 2011-06-27T14:13:30.987 回答
-1

我刚才在这里拍的代码是一种扩展方法,可以将任何东西序列化为 json http://pastebin.com/cUX82cJC

于 2011-06-27T14:09:59.687 回答