缩小/剥离给定的 JSON 对象



一个.net服务从Twitter给了我这个,我只需要大约五个字段,我已经凑合着用JSON给出,它只是JSON对象的数组可能非常大,似乎没有必要向客户端提供大型JSON文件而不是小型JSON,例如,仅在JSON中包含一个对象, 可能非常多..问题是如何在将其提供给 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"u003EHootSuiteu003C/au003E",
   "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:) nnRT @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:) nnRT @ATXglutenfree: My #startup, Locate Special Diet, has officially launched! http://t.co/KyeDWZYj"
  }]
};
您可以使用

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; }
}

相关内容

  • 没有找到相关文章

最新更新