使用DataContractJsonSerializer

时间:2010-10-05 00:41:15

标签: json wcf datacontractjsonserializer

我正在尝试托管一个WCF服务,该服务通过提供json输出流来响应传入的请求。我有以下类型

[DataContract]  
[KnownType(typeof(List<HubCommon>))]
[KnownType(typeof(Music))]
[KnownType(typeof(AppsAndPlugins))]
[KnownType(typeof(Notifications))]
[KnownType(typeof(Scenes))]
[KnownType(typeof(Skins))]
[KnownType(typeof(Ringtones))]
[KnownType(typeof(Alarms))]
[KnownType(typeof(Widgets))]
[KnownType(typeof(Wallpapers))]
[KnownType(typeof(Soundsets))]
public class HubCommon{}

在我的* .svc.cs文件中,我执行以下操作

List<HubCommon> hubContent = _ldapFacade.GetResults(query);
        MemoryStream stream = new MemoryStream();
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(HubCommon));          
        serializer.WriteObject(stream,hubContent);

所以基本上我试图将List序列化为Json但是我在“WriteObject”执行时遇到以下错误: -

服务器在处理请求时遇到错误。异常消息是'Type'System.Collections.Generic.List`1 [[HubContentCore.Domain.HubCommon,HubContentCore,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]',数据协定名称为'ArrayOfHubCommon:http ://schemas.datacontract.org/2004/07/HubContentCore.Domain'不是预期的。将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中。'

我在这里缺少什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您的DataContractJsonSerializer的类型为HubCommon,但您正在编写List<HubCommon>类型的对象,并且HubCommon未添加KnownTypAttribute