一尘不染

使用动态密钥反序列化JSON

c#

我是JSON的新手,目前正在学习(反)序列化。我正在从网页中检索JSON字符串,并尝试将其反序列化为对象。问题是,根json密钥是静态的,但是基础密钥是动态的,我无法预期它们会反序列化。这是字符串的一个迷你示例:

{
    "daily": {
        "1337990400000": 443447,
        "1338076800000": 444693,
        "1338163200000": 452282,
        "1338249600000": 462189,
        "1338336000000": 466626
    }
}

对于我的应用程序中的另一个JSON字符串,我使用了,JavascriptSerializer并使用类结构来预期密钥。将字符串反序列化为对象的最佳方法是什么?


阅读 340

收藏
2020-05-19

共1个答案

一尘不染

认真地说,无需走动态路线;采用

var deser = new JavaScriptSerializer()
    .Deserialize<Dictionary<string, Dictionary<string, int>>>(val);
var justDaily = deser["daily"];

得到一本字典,然后你可以例如

foreach (string key in justDaily.Keys)
    Console.WriteLine(key + ": " + justDaily[key]);

获取存在的密钥和相应的值。

2020-05-19