Deserializing JSON using JSon.NET with dynamic data

前端 未结 6 1491
被撕碎了的回忆
被撕碎了的回忆 2020-11-28 11:18

I\'m trying to deserialize some JSON data into objects for an application. Up until now it\'s been fine because the properties on the JSON data was static (key with a value)

6条回答
  •  自闭症患者
    2020-11-28 11:51

    Here is how you do using https://github.com/facebook-csharp-sdk/simple-json ( https://nuget.org/packages/SimpleJson ).

    var text = "{\"query\":{\"pages\":{\"6695\":{\"pageid\":6695,\"ns\":0,\"title\":\"Citadel\",\"touched\":\"2012-01-03T19:16:16Z\",\"lastrevid\":468683764,\"counter\":\"\",\"length\":8899}}}}";
    

    (Using dynamic)

    dynamic json = SimpleJson.DeserializeObject(text);
    string title = json.query.pages["6695"].title;
    
    foreach (KeyValuePair page in json.query.pages)
    {
        var id = page.Key;
        var pageId = page.Value.pageid;
        var ns = page.Value.ns;
    }
    

    (Using strongly typed classes)

    class result
    {
        public query query { get; set; }
    }
    class query
    {
        public IDictionary pages { get; set; }
    }
    class page
    {
        public long pageid { get; set; }
        public string title { get; set; }
    }
    
    var result = SimpleJson.DeserializeObject(text);
    

    [Update]

    on windows phone where dynamic is not supported and you don't want to use strongly typed classes.

    var json = (IDictionary)SimpleJson.DeserializeObject(text);
    var query = (IDictionary)json["query"];
    var pages = (IDictionary)query["pages"];
    var pageKeys = pages.Keys;
    var page = (IDictionary)pages["6695"];
    var title = (string)page["title"];
    

提交回复
热议问题