【问题标题】:How can I Deserialize nested json with DataContractJsonSerializer?如何使用 DataContractJsonSerializer 反序列化嵌套的 json?
【发布时间】:2017-12-17 08:39:03
【问题描述】:

我正在尝试像这样反序列化 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】:
    var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    
    SettingSet settingSet = serializer.Deserialize<SettingSet>(jSon);
    

    【讨论】:

    • 这会抛出System.InvalidOperationException: 'Type 'Setting' is not supported for deserialization of an array.'
    • 尝试使用设置作为集合或列表
    • 在 System.Collections.ObjectModel.Collection 和 List 中都会发生
    • 您的设置如下所示: public List> settings { get;放; }
    • 谢谢,List> 和 object[][] 都有效。
    猜你喜欢
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多