我一直试图弄清楚为什么我的一些测试没有工作(TDD)并设法将其追踪到一个类的序列化,但我不确定它为什么不工作。有两种风格,一个简单版本和一个更复杂的版本,稍微复杂一点的版本涉及在 Parameter.Value 中包含一组值。
简单的版本,我有一个可以使用 serailzied 的类JavaScriptSerializer
(我假设这是 MVC 在生成 JSON 时的工作方式)。它产生的结构如下所示:
{
"Name": "TestQuery",
"QueryId": 1,
"Parameters": [
{
"Name": "MyString",
"DataType": 0,
"Value": "A String",
"IsArray": false
}],
"Sql": "SELECT * FROM Queries"
}
有 3 个 C# 类Query
(ParameterCollection
即 a KeyedCollection<String, Parameter>
)和 a Parameter
。所有这些都用DataContract
/DataMember
属性标记并通过DataContractSerializer
没有任何问题进行序列化。
但是,将JavaScriptSerializer
对象正确序列化为上面的 JSON,但是在反序列化时我没有参数,它们似乎只是被遗漏了。
有谁知道为什么这些失败,以及我可以做些什么来解决它?