deserialize dynamic object

随声附和 提交于 2019-12-02 04:57:51

Using your sample json, following code works for me,

dynamic response = JsonConvert.DeserializeObject(json);

Console.WriteLine("PropName:" + response.data[1].attachment.properties[0].name);

foreach (var data in response.data)
{
    if (data.attachment != null)
        Console.WriteLine((string)data.attachment.name);
}

PS: I used Json.Net


string json = @"{""data"":
 [
    {
        ""message"": """",
        ""type"": null,
        ""attachment"": {
            ""description"": """"
        }
    },
    {
        ""message"": """",
        ""type"": 80,
        ""attachment"": {
            ""media"": [
                {
                    ""href"": ""https://www.facebook.com/pages/Team-Vintage/119337701414139"",
                    ""alt"": """",
                    ""type"": ""link"",
                    ""src"": ""https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn1/71056_119337701414139_6207793_n.jpg""
                }
            ],
            ""name"": ""Team Vintage"",
            ""href"": ""https://www.facebook.com/pages/Team-Vintage/119337701414139"",
            ""caption"": """",
            ""description"": ""Team Vintage is designed to handle all your event planning needs.  We cater to individuals as well as groups and businesses focused on sporting events, concerts, tailgates, golf outings, as well as transportation via limos and party/coach buses."",
            ""properties"": [
                {
                    ""name"": ""Page"",
                    ""text"": ""245 like this""
                }
            ],
            ""icon"": ""https://fbstatic-a.akamaihd.net/rsrc.php/v2/yf/r/0HZPW6-lhQu.png""
        }
    },
    {
        ""message"": """",
        ""type"": 237,
        ""attachment"": {
            ""media"": [
                {
                    ""href"": """",
                    ""alt"": """",
                    ""type"": ""swf"",
                    ""src"": ""https://fbexternal-a.akamaihd.net/app_full_proxy.php?app=263101677125815&v=1&size=p&cksum=7d97808202a372d6392257f52d91e5d2&src=http%3A%2F%2Fi1.sndcdn.com%2Fartworks-000027234998-gkd71f-t500x500.jpg%3Fcc07a88"",
                    ""swf"": {
                        ""source_url"": ""http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F50851560&color=3b5998&auto_play=true&show_artwork=false&origin=facebook"",
                        ""preview_img"": ""https://fbexternal-a.akamaihd.net/app_full_proxy.php?app=263101677125815&v=1&size=p&cksum=7d97808202a372d6392257f52d91e5d2&src=http%3A%2F%2Fi1.sndcdn.com%2Fartworks-000027234998-gkd71f-t500x500.jpg%3Fcc07a88"",
                        ""width"": 460,
                        ""height"": 98,
                        ""expanded_width"": 0,
                        ""expanded_height"": 0
                    }
                }
            ],
            ""name"": ""Camp Bisco"",
            ""href"": ""http://soundcloud.com/amon-tobin/bed-time-stories-extended-live"",
            ""caption"": """",
            ""description"": ""Check out this extended track from Amon Tobin!"",
            ""properties"": [],
            ""icon"": ""https://www.facebook.com/images/icons/default_app_icon.gif""
        }
    },
    {
        ""message"": """",
        ""type"": null,
        ""attachment"": {
            ""description"": """"
        }
    },
    {
        ""message"": """",
        ""type"": 237,
        ""attachment"": {
            ""media"": [
                {
                    ""href"": ""https://dev.fanfueledengage.com/share/auitbc"",
                    ""alt"": """",
                    ""type"": ""link"",
                    ""src"": ""https://fbexternal-a.akamaihd.net/app_full_proxy.php?app=263101677125815&v=1&size=z&cksum=124f2c1fb6ea2fcaa8d98ebe0fd2246d&src=http%3A%2F%2Fimages.proboardshop.com%2Fbigagnes-elkpark20-long-right-sleepingbag-coalrust-13-thumb.jpg""
                }
            ],
            ""name"": ""Proboardshop"",
            ""href"": ""https://dev.fanfueledengage.com/share/auitbc"",
            ""caption"": ""dev.fanfueledengage.com"",
            ""description"": ""I just bought  Big Agnes Elk Park 20 Long Right Sleeping Bag Coal/Rust  on FanFueled. I'm earning Camp Bisco points. Check it out. If you decide to make a purchase through my link, FanFueled will pay me a commission for it, cool huh?"",
            ""properties"": [],
            ""icon"": ""https://www.facebook.com/images/icons/default_app_icon.gif""
        }
    },
    {
        ""message"": """",
        ""type"": 8,
        ""attachment"": {
            ""description"": """"
        }
    },
    {
        ""message"": """",
        ""type"": 80,
        ""attachment"": {
            ""media"": [
                {
                    ""href"": ""https://www.facebook.com/pages/Magnolia-Roller-Vixens/29048470621"",
                    ""alt"": """",
                    ""type"": ""link"",
                    ""src"": ""https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash4/276513_29048470621_1691556_n.jpg""
                }
            ],
            ""name"": ""Magnolia Roller Vixens"",
            ""href"": ""https://www.facebook.com/pages/Magnolia-Roller-Vixens/29048470621"",
            ""caption"": """",
            ""description"": ""Magnolia Roller Vixens is a community-wise sports initiative for adult females. Our purpose is for fun, friendly sports competition among like-minded women.  Magnolia Roller Vixens promotes and fosters the sport of women's flat track derby by facilitating the development of athletic ability, sportsw..."",
            ""properties"": [
                {
                    ""name"": ""Page"",
                    ""text"": ""2,717 like this""
                }
            ],
            ""icon"": ""https://fbstatic-a.akamaihd.net/rsrc.php/v2/yf/r/0HZPW6-lhQu.png""
        }
    }
 ]
}";
Andy

I am posting this because the above does not explain what is wrong.

Your json is already deserialized when it is in the dynamic object. You should be able to access to its members with something like this:

result[0].message;

If you want your response as a string you need to do this:

FacebookClient client = new FacebookClient();
string path = "SELECT message, type, attachment FROM stream WHERE source_id = " + fbid.ToString();
string result = client.Get("fql", new { q = path }).ToString();
 ^^^                                                  ^^^

Hope this helps someone.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!