0

.net サービスが twitter からこれを提供しています。約 5 つのフィールドしか必要ありません。JSON の提供で間に合わせました。JSON オブジェクトの配列は非常に大きくなる可能性があり、大きな JSON ファイルを提供する必要はないようです。クライアント側と小さなもの、たとえばJSONに1つのオブジェクトのみを含める目的で、非常に多くなる可能性があります..問題は、jsファイルで提供する前に縮小する方法です。バックエンドの方法で解析し、私が必要とするプロパティ。

var twitter_peeps = {
twitterFeedData:
 [{
    "in_reply_to_user_id_str":null,
    "truncated":false,
    "contributors":null,
    "created_at":"Fri May 18 19:20:34 +0000 2012",
    "in_reply_to_screen_name":null,
    "favorited":false,
    "geo":null,
    "user":{
       "id":16819632,
       "verified":false,
       "default_profile":true,
       "profile_background_color":"C0DEED",
       "statuses_count":8595,
       "following":true,
       "time_zone":"Central Time (US & Canada)",
       "profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png",
       "profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/62250922\/Garrett_and_Michael_8_X_10_2_22-54-34_normal.jpg",
       "utc_offset":-21600,
       "profile_link_color":"0084B4",
       "followers_count":12883,
       "listed_count":542,"name":"Garrett Weber-Gale",
       "notifications":false,
       "protected":false,"id_str":"16819632",
       "profile_use_background_image":true,
       "screen_name":"G_WeberGale",
       "is_translator":false,
       "profile_text_color":"333333",
       "profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/62250922\/Garrett_and_Michael_8_X_10_2_22-54-34_normal.jpg",
       "friends_count":3758,
       "description":"Co-founder AthleticFoodieTM. High blood pressure warrior. In love w food\/cooking! Working 2 get better @ everything",
       "profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png",
       "default_profile_image":false,
       "url":"http:\/\/www.athleticfoodie.com",
       "profile_sidebar_border_color":"C0DEED",
       "favourites_count":20,
       "created_at":"Fri Oct 17 03:35:09 +0000 2008",
       "contributors_enabled":false,
       "geo_enabled":true,
       "profile_background_tile":false,
       "lang":"en","profile_sidebar_fill_color":"DDEEF6",
       "show_all_inline_media":false,
       "follow_request_sent":false,
       "location":"Austin, Texas"
    },
    "retweet_count":0,
    "coordinates":null,
    "in_reply_to_user_id":null,
    "source":"\u003Ca href=\"http:\/\/www.hootsuite.com\" rel=\"nofollow\"\u003EHootSuite\u003C\/a\u003E",
   "in_reply_to_status_id_str":null,
   "id_str":"203565761040629760",
   "place":null,
   "in_reply_to_status_id":null,
   "id":203565761040629760,
   "possibly_sensitive":false,
   "retweeted":false,
   "text":"Awesome! Good for you:) \n\nRT @ATXglutenfree: My #startup, Locate Special Diet, has officially launched! http:\/\/t.co\/KyeDWZYj"
 }]
};

var twitter_peeps = {
twitterFeedData:
  [{
    "created_at":"Fri May 18 19:20:34 +0000 2012",
    "user":{
         "profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/62250922\/Garrett_and_Michael_8_X_10_2_22-54-34_normal.jpg",
         "screen_name":"G_WeberGale",
    },
    "id_str":"203565761040629760",
    "text":"Awesome! Good for you:) \n\nRT @ATXglutenfree: My #startup, Locate Special Diet, has officially launched! http:\/\/t.co\/KyeDWZYj"
  }]
};
4

1 に答える 1

0

Json.NETを使用して、Web サービスからの応答を JArray として解析できます。次に、必要な応答から必要なデータのみを選択できます。応答の一部を逆シリアル化するために必要なプロパティを含むカスタム オブジェクトを作成することもできます。

カスタム オブジェクトを手動で応答のリストにロードする例を次に示します。

string json = "{\n\"twitterFeedData\":\n [{\n \"in_reply_to_user_id_str\":null,\n \"truncated\":false,\n \"contributors\":null,\n \"created_at\":\"Fri May 18 19:20:34 +0000 2012\",\n \"in_reply_to_screen_name\":null,\n \"favorited\":false,\n \"geo\":null,\n \"user\":{\n \"id\":16819632,\n \"verified\":false,\n \"default_profile\":true,\n \"profile_background_color\":\"C0DEED\",\n \"statuses_count\":8595,\n \"following\":true,\n \"time_zone\":\"Central Time (US & Canada)\",\n \"profile_background_image_url\":\"http:\\/\\/a0.twimg.com\\/images\\/themes\\/theme1\\/bg.png\",\n \"profile_image_url\":\"http:\\/\\/a0.twimg.com\\/profile_images\\/62250922\\/Garrett_and_Michael_8_X_10_2_22-54-34_normal.jpg\",\n \"utc_offset\":-21600,\n \"profile_link_color\":\"0084B4\",\n \"followers_count\":12883,\n \"listed_count\":542,\"name\":\"Garrett Weber-Gale\",\n \"notifications\":false,\n \"protected\":false,\"id_str\":\"16819632\",\n \"profile_use_background_image\":true,\n \"screen_name\":\"G_WeberGale\",\n \"is_translator\":false,\n \"profile_text_color\":\"333333\",\n \"profile_image_url_https\":\"https:\\/\\/si0.twimg.com\\/profile_images\\/62250922\\/Garrett_and_Michael_8_X_10_2_22-54-34_normal.jpg\",\n \"friends_count\":3758,\n \"description\":\"Co-founder AthleticFoodieTM. High blood pressure warrior. In love w food\\/cooking! Working 2 get better @ everything\",\n \"profile_background_image_url_https\":\"https:\\/\\/si0.twimg.com\\/images\\/themes\\/theme1\\/bg.png\",\n \"default_profile_image\":false,\n \"url\":\"http:\\/\\/www.athleticfoodie.com\",\n \"profile_sidebar_border_color\":\"C0DEED\",\n \"favourites_count\":20,\n \"created_at\":\"Fri Oct 17 03:35:09 +0000 2008\",\n \"contributors_enabled\":false,\n \"geo_enabled\":true,\n \"profile_background_tile\":false,\n \"lang\":\"en\",\"profile_sidebar_fill_color\":\"DDEEF6\",\n \"show_all_inline_media\":false,\n \"follow_request_sent\":false,\n \"location\":\"Austin, Texas\"\n },\n \"retweet_count\":0,\n \"coordinates\":null,\n \"in_reply_to_user_id\":null,\n \"source\":\"\\u003Ca href=\\\"http:\\/\\/www.hootsuite.com\\\" rel=\\\"nofollow\\\"\\u003EHootSuite\\u003C\\/a\\u003E\",\n \"in_reply_to_status_id_str\":null,\n \"id_str\":\"203565761040629760\",\n \"place\":null,\n \"in_reply_to_status_id\":null,\n \"id\":203565761040629760,\n \"possibly_sensitive\":false,\n \"retweeted\":false,\n \"text\":\"Awesome! Good for you:) \\n\\nRT @ATXglutenfree: My #startup, Locate Special Diet, has officially launched! http:\\/\\/t.co\\/KyeDWZYj\"\n }]\n}";

JObject obj = JObject.Parse(json);
JArray arr = JArray.Parse(obj["twitterFeedData"].ToString());

List<TwitterResponse> responses = new List<TwitterResponse>();

foreach (var item in arr)
{

   TwitterResponse tr = new TwitterResponse()
   {
       CreatedAt = item["created_at"].Value<string>(),
       IdStr = item["id_str"].Value<string>(),
       Text = item["text"].Value<string>(),
       User = new User() { 
           ProfileImageUrl = item["user"]["profile_image_url"].Value<string>(),
           ScreenName = item["user"]["screen_name"].Value<string>()
       }
   };

   responses.Add(tr);
}

class TwitterResponse
{
    public string CreatedAt { get; set; }
    public string Text { get; set; }
    public string IdStr { get; set; }
    public User User { get; set; }
}
class User
{
    public string ProfileImageUrl { get; set; }
    public string ScreenName { get; set; }
}
于 2012-05-19T04:26:23.590 に答える