如何使用JSON嵌套对象

时间:2015-09-16 10:22:40

标签: c# json asp.net-mvc facebook-graph-api

我有这个Json派生自另一个json数组:

  

{“location”:“LaGravière - Officiel”,“name”:“Conférencedepresse   Animatou 2015etsoiréeàla   Gravière“, “START_TIME!”: “2015-09-17T18:00:00 + 0200”, “时区”: “欧洲/苏黎世”, “ID”: “1632156500365990”}

     

{“location”:“UniversitédeSafrania”,“name”:“Conférence”神奇宝贝的   研究\ “”, “START_TIME”: “2015-10-31T20:30:00 + 0100”, “时区”: “欧洲/巴黎”, “ID”: “372932366218217”}

     

{“location”:“Digital October Center”,“name”:“BigData   会议”, “START_TIME”: “2015-09-18T09:00:00 + 0300”, “时区”: “欧洲/莫斯科”, “ID”: “680056618762120”}

     

{“location”:“Centro CulturaldeBelém”,“name”:“iMedConference7.0® -   里斯本2015“,”start_time“:”2015-09-17“,”时区“:”欧洲/里斯本“,”id“:”700462560065856“}   { “位置”:“UNIVERSITEIT   van Amsterdam / Oudemanhuispoort“,”name“:”2015阿姆斯特丹地区   会议”, “START_TIME”: “2015年9月19日”, “时区”: “欧洲/阿姆斯特丹”, “ID”: “1608898599391019”}

这是以下代码的结果:

            string searchKeyword = "conference";
            Facebook.JsonObject result = (Facebook.JsonObject) fbClient.Get("/search?q=" + searchKeyword + "&type=event");
            JsonArray data = (JsonArray)result["data"];
            for(int i = 0; i< data.Count; i++)
            {
                JsonObject l = (JsonObject) data.ElementAt(i);
                Response.Write(l);
            }

当我尝试在jsonobject中获取每个会议的位置时,我收到以下错误:

  

“System.Collections.Generic.KeyNotFoundException”类型的异常   发生在mscorlib.dll中但未在用户代码中处理

我使用此代码获取位置:

        for(int i = 0; i< data.Count; i++)
        {
            JsonObject l = (JsonObject) data.ElementAt(i);
            Response.Write(l["location"]);
        }

轻松使用此数据的正确方法是什么?我试图首先反序列化数据对象,但这会产生错误。

如果我执行此代码:

            string searchKeyword = "conference+reggae";
            Facebook.JsonObject result = (Facebook.JsonObject) fbClient.Get("/search?q=" + searchKeyword + "&type=event");
            JsonArray data = (JsonArray)result["data"];
            Array d = data.ToArray();
            Response.Write(result);

我得到了这个输出:

{"data":[{"end_time":"2015-09-26T06:00:00+0200","location":"Blue Note Düsseldorf","name":"DANCEHALL CONFERENCE 2 YEARS ANNIVERSARY / EARDRUM SOUND & CHANTA CREW / Dancehall, Mashup, Reggae, HipHop","start_time":"2015-09-25T23:00:00+0200","timezone":"Europe/Berlin","id":"1001780686562929"},{"location":"Blue Note Düsseldorf","name":"DANCEHALL CONFERENCE lgs. EARDRUM SOUND / Dancehall, Mashup, Reggae, HipHop","start_time":"2015-10-23T23:00:00+0200","timezone":"Europe/Berlin","id":"1639387246339755"}],"paging":{"cursors":{"before":"MAZDZD","after":"MQZDZD"}}}

我如何继续获取每个条目的每个位置?

现在我已经通过在response.write周围使用try-catch子句来解决它,似乎得到的JSON不一致。

代码:

            for (int i = 0; i < data.Count; i++)
            {
                JsonObject l = (JsonObject)data.ElementAt(i);
                try
                {
                    Response.Write(l["location"]);
                }
                catch (Exception e)
                {

                }

            }

1 个答案:

答案 0 :(得分:0)

我想强烈建议,通过&#34; newton json&#34;图书馆。我发现它对于处理json数据非常有用。你会发现小rnd的例子。它非常简单,并提供非常干净的代码来与json进行操作。