2015-09-16 27 views
2

Я это Json, полученные из другого массива JSon:Как работать с JSON вложенными объектами

{"location":"La Gravière - Officiel","name":"Conférence de presse Animatou 2015 et soirée à la Gravière!","start_time":"2015-09-17T18:00:00+0200","timezone":"Europe/Zurich","id":"1632156500365990"}

{"location":"Université de Safrania","name":"Conférence \"Pokémon's Studies\"","start_time":"2015-10-31T20:30:00+0100","timezone":"Europe/Paris","id":"372932366218217"}

{"location":"Digital October Center","name":"BigData Conference","start_time":"2015-09-18T09:00:00+0300","timezone":"Europe/Moscow","id":"680056618762120"}

{"location":"Centro Cultural de Belém","name":"iMed Conference 7.0® – Lisbon 2015","start_time":"2015-09-17","timezone":"Europe/Lisbon","id":"700462560065856"} {"location":"Universiteit van Amsterdam/Oudemanhuispoort","name":"2015 Amsterdam Regional Conference","start_time":"2015-09-19","timezone":"Europe/Amsterdam","id":"1608898599391019"}

Это является результатом следующего кода:

  string searchKeyword = "conference"; 
      Facebook.JsonObject result = (Facebook.JsonObject) fbClient.Get("https://stackoverflow.com/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, я получаю следующее сообщение об ошибке:

An exception of type 'System.Collections.Generic.KeyNotFoundException' occurred in mscorlib.dll but was not handled in user code

Я использую этот код, чтобы получить место:

 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("https://stackoverflow.com/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"}}} 

Как бы продолжить, чтобы получить каждое место в каждой записи?

На данный момент я решил это, используя предложение try-catch вокруг response.write, похоже, что полученный JSON не был согласован.

Код:

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

       } 

      } 
+1

Я не уверен, почему вы получаете эту ошибку, но это недействительно json, ее не массив –

+0

Я отредактировал вопрос с дополнительной информацией (переменный дамп «результата») –

ответ

0

Я хотел бы настоятельно предложить, пройти через "ньютон JSon" библиотеки. Мне было очень полезно работать с данными json. Вы найдете примеры на маленьком rnd. Это легко и обеспечивает очень чистый код для работы с json.

+0

Allright Я проверю это , благодаря! –

+0

[link] (https://jsonclassgenerator.codeplex.com/) Пожалуйста, используйте эту ссылку, если у вас есть структура json. этот инструмент будет генерировать класс из json –

Смежные вопросы