如何使用DataContractJsonSerializer反序列化嵌套的json?

问题描述 投票:1回答:1

我试图像这样反序列化json:

{
    "version": 3070,
    "settings": [
        [
            "settingInteger",
            0,
            "1513486800",
            {
                "param": "A"
            }
        ],
        [
            "settingBool",
            1,
            "false",
            {
                "param": "B"
            }
        ],
        [
            "settingString",
            2,
            "somedata",
            {
                "param" : "C"
            }
        ]
    ]
}

所以我试图用DataContraceJsonSerializer反序列化到这个类:

 [DataContract]
 public class SettingSet
 {
     [DataMember(Name = "version")]
     public int Version { get; set; }
     [DataMember(Name = "settings)]
     public Setting[] Settings { get; set; }
 }
 [DataContract]
 public class Setting
 {
     [DataMember(Order = 0)]
     public string OptionName { get; set; }
     [DataMember(Order = 1)]
     public SettingType Type { get; set; }
     [DataMember(Order = 2)]
     public string Value { get; set; }
     [DataMember(Order = 3)]
     public Dictionary<string, string> Parameters { get; set; }
 }

但我只能得到Version和空Settings数组。 如果我使用object[][]而不是Setting[],我可以得到一些数据,但param仍然无法访问。 有什么方法可以解决这个问题,还是应该使用其他JSON库?

c# json datacontractjsonserializer
1个回答
0
投票
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();

SettingSet settingSet = serializer.Deserialize<SettingSet>(jSon);
© www.soinside.com 2019 - 2024. All rights reserved.