反序列化复杂的动态JSON字符串

时间:2014-03-05 09:42:29

标签: c# json dynamic deserialization complextype

如果要反序列化的对象看起来像这样(其中键Ioc,Name,id和timestamp是静态的,而字段键是动态的 - 意味着它可能包含可变数量的项目)???

{
   "moduleinstances": [
     {
        "Ioc": "ioc1", 
        "Name": "name1", 
        "fields": {
            "PV_PREFIX": "PIPE", 
            "TIMEOUT": "1"
        }, 
        "id": 25, 
        "timestamp": "/Date(1393518678000)/"
     }
    ]
}

如何反序列化这种字符串?

1 个答案:

答案 0 :(得分:1)

秘诀是尽可能保持反序列化的JSON:

Dictionary<string, object> theData= new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(jsonString);

Dictionary<string, object> fieldsNode = (Dictionary<string, object>)theData["fields"];

string pv_prefix = (string)fieldsNode["PV_PREFIX"];
string timeout = (string)fieldsNode["TIMEOUT"];

Deserialize()的调用会创建一个Dictionary<string, object>树,您可以随意浏览。