Данные Parse Json с несколькими деталями из twitter

Я получаю следующий вывод из твиттера, и я хочу, чтобы только данные были записаны с вывода.

  1. Ник
  2. Подписчики
  3. profile_image_url

Проблема заключается в том, что данные находятся внутри вложенного Json.

Вывод в Twitter API:

[{ "contributors" : null,
"coordinates" : null,
"created_at" : "Wed Jan 29 09:18:15 +0000 2014",
"favorite_count" : 0,
"favorited" : false,
"geo" : null,
"id" : 428457050109382657,
"id_str" : "428457050109382657",
"in_reply_to_screen_name" : null,
"in_reply_to_status_id" : null,
"in_reply_to_status_id_str" : null,
"in_reply_to_user_id" : null,
"in_reply_to_user_id_str" : null,
"lang" : "en",
"place" : null,
"user" : { "contributors_enabled" : false,
 "follow_request_sent" : null,
 "followers_count" : 218,
 "id" : 609465835,
 "id_str" : "609465835",
 "is_translation_enabled" : false,
 "is_translator" : false,
 "lang" : "en",
 "listed_count" : 3,
 "location" : "Still alpha as fuck.",
 "verified" : false
 }
}, 
{ "contributors" : null,
"coordinates" : null,
"created_at" : "Wed Jan 29 09:18:15 +0000 2014",
"favorite_count" : 0,
"favorited" : false,
"geo" : null,
"id" : 428457050109382657,
"id_str" : "428457050109382657",
"in_reply_to_screen_name" : null,
"in_reply_to_status_id" : null,
"in_reply_to_status_id_str" : null,
"in_reply_to_user_id" : null,
"in_reply_to_user_id_str" : null,
"lang" : "en",
"place" : null,
"user" : { "contributors_enabled" : false,
 "follow_request_sent" : null,
 "followers_count" : 1218,
 "id" :33333,
 "id_str" : "609465835",
 "is_translation_enabled" : false,
 "is_translator" : false,
 "lang" : "en",
 "listed_count" : 3,
 "location" : "N",
 "verified" : false
 }
}]

и выход

Я пытаюсь работать с Newtonsoft Json deserialize, но не удалось.

Ниже приведен код:

dynamic dynObj = JsonConvert.DeserializeObject(twitAuthResponse);
 foreach (var data in dynObj.user.data)
 {
 //Console.WriteLine("{0}", data.name);
 foreach (var fql in data.user)
 {
 foreach (JProperty keyValue in fql)
 {
 Console.WriteLine("\t{0} : {1}", keyValue.Name, keyValue.Value);
 }
 }
 }

Вышеприведенный код возвращает ошибку "Newtonsoft.Json.Linq.JArray" не содержит определения для "user".

Может кто-нибудь, пожалуйста, помогите мне? Заранее спасибо!

2 ответа

Наконец,

dynamic stuff = JsonConvert.DeserializeObject(twitAuthResponse);

foreach (JObject item in stuff)
{
 foreach (JProperty trend in item["user"])
 {
 if (trend.Name == "name")
 {
 // GET NAME
 }
 else if (trend.Name == "followers_count")
 {
 // GET COUNT
 }
 else if (trend.Name == "profile_image_url")
 {
 // GET PROFILE URL
 }
 }
}


Пожалуйста, взгляните на следующую статью: http://www.hanselman.com/blog/NuGetPackageOfTheWeek4DeserializingJSONWithJsonNET.aspx

Вам нужно указать тип десериализуемого объекта, а не использовать динамический.

Как и в случае с var twitterJson = JsonConvert.DeserializeObject<twitterresponse>(twitAuthResponse);</twitterresponse>

Пока этот объект.NET соответствует схеме JSON, он автоматически отображает и вы можете получить доступ ко всем свойствам и значениям строго типизированным.

licensed under cc by-sa 3.0 with attribution.