使用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#中的结构内的内容?

+0

取决于,结构是否相同,结构中的位置对于“0123”总是相同的? –

+0

变量名不能在c#中编号。 – ANewGuyInTown

+0

感谢您的意见。 “0123”只是一个例子。实际上它不是变量的名称,它是真实情况下的变量值,因此它可以是“abcd”或“defg”。我不知道如何解析这种类型的结构,因为它没有静态变量名称。 –

你可以尝试把你的怪变量名词典使用[JsonExtensionData]

[JsonExtensionData] 
public Dictionary<string, object> strangeVariables { get; set; } 

这将Response对象中去。

+0

嗨ANewGuylnTown,谢谢你的建议。你能否详细给我一下代码。我尝试了下面的结构,但它仍然为我返回一个空值。 [DataContract] public class summaryStruct { [JsonExtensionData] public IDictionary s; } –

+0

非常感谢。它不工作。 我必须使用Newtonsoft.Json.JsonConvert中提供的serialize/deserialize函数以获取它。使用.NET默认的DataContractJsonSerializer将不起作用。 –