我有一个复杂的JSON对象张贴到WCF服务的层次结构。按照设计和其他要求,每个JSON对象都有一个整数id,它在概念上表示其类型或字段布局(我们称之为类型id)。通过检查WCF中传入的JSON动态类型选择?
我想完成的是通过检查每个传入的整数类型ID来控制为每个JSON对象的反序列化选择哪种.NET类型。
示例输入:
{
"typeId": 4,
"someField1": "foo",
"someField2": "bar",
"otherObject":
{
"typeId": 7
"someField3": "abc",
"someField4": "xyz"
}
}
实施例(理想)工艺:
1. I receive partially parsed object.
2. I inspect "typeId" which has value 4.
3. I notify the deserialization process that I elect to use my .NET type FooBarA.
4. I receive partially parsed object.
5. I inspect "typeId" which has value 7.
6. I notify the deserialization process that I elect to use my .NET type FooBarB.
是这种或类似的可能做什么?我似乎记得asmx风格的服务用于包含类似于我的类型id的__type字段,但我不记得它的确切目的,或者是否可以在WCF中作为替代方法启用它。
在我的情况下,如果一个嵌套的对象可能永远是一个父对象的一部分,父目标类型总会有相应的场强类型。 – DuckMaestro 2011-04-30 04:19:03
在这种情况下,该类应该使用父类型的默认DataContractJsonSerializer正确反序列化,而无需执行任何操作。 – thaBadDawg 2011-04-30 21:52:29
似乎没有。我认为该字段是作为基类输入的。我需要能够检查类型ID以知道哪个派生类用于反序列化。无论如何,我已经使用Json.NET重读和JsonConverter制定了一个解决方案。谢谢。 – DuckMaestro 2011-04-30 23:19:08