我需要通过WCF服务从服务器发送一个相关但不同类型的对象数组作为JSON。尝试返回object []数组时,WCF服务失败。我还想了一步,我怎么会在客户端解析它?
我想出了一个使用JsonWrapper类的解决方案。而不是发送object []我发送JsonWrapper []。返回的JSON看起来像这样:
[
{
"Json":"{\"Id\":\"abc\"}",
"Type":"DemoServer.Foo"
},
{
"Json":"{\"Id\":\"def\",\"Count\":3}",
"Type":"DemoServer.Bar"
}
]
正如您所看到的,我正在对JSON进行双重序列化,这意味着我必须对返回的数组进行反序列化,然后逐个反序列化每个项目。我有点喜欢这种方法,因为对象不必在服务器和客户端上都是二进制兼容的。不知何故,JSON的双重序列化感觉不对。
有更好的方法吗?我在服务器上使用WCF,在客户端上使用Json.net。我知道“__type”参数,但我不确定这是解决我问题的方法。