使用C#DataContractJsonSerializer解析JSON命名数组
如何使用DataContractJsonSerializer来解析没有修复名的JSON数组?假设一个JSON结构是这样的:使用C#DataContractJsonSerializer解析JSON命名数组
{
"SUMMARY":
{
"0123":
[
{
"Type": "Type_A",
"Duration": 100
}
]
}
}
在C#中,我可以初始化两个数据如下对象使用DataContractJsonSerializer这样来解析它们:
[DataContract]
public class numberedStruct {
[DataMember(Name = "Type")]
public string Type {get; set;}
[DataMember(Name = "Duration")]
public int Duration{get; set;}
}
[DataContract]
public class summaryStruct {
[DataMember(Name = "0123")]
public numberedStruct[] s;
}
但是,如果“0123”是什么也变量,它可以是别的东西?所以我无法将DataMember名称修改为“0123”。
我怎样才能得到“0123”作为一个变量,也是在C#中的结构内的内容?
你可以尝试把你的怪变量名词典使用[JsonExtensionData]
[JsonExtensionData]
public Dictionary<string, object> strangeVariables { get; set; }
这将Response对象中去。
嗨ANewGuylnTown,谢谢你的建议。你能否详细给我一下代码。我尝试了下面的结构,但它仍然为我返回一个空值。 [DataContract] public class summaryStruct { [JsonExtensionData] public IDictionary
非常感谢。它不工作。 我必须使用Newtonsoft.Json.JsonConvert中提供的serialize/deserialize函数以获取它。使用.NET默认的DataContractJsonSerializer将不起作用。 –
取决于,结构是否相同,结构中的位置对于“0123”总是相同的? –
变量名不能在c#中编号。 – ANewGuyInTown
感谢您的意见。 “0123”只是一个例子。实际上它不是变量的名称,它是真实情况下的变量值,因此它可以是“abcd”或“defg”。我不知道如何解析这种类型的结构,因为它没有静态变量名称。 –