Youtube Data v3 Api,获取请求排序

时间:2016-12-07 17:04:47

标签: c# youtube youtube-data-api

嘿大家我试图使用v3 Data Youtube API,已经有了Request本身,响应看起来像这样

{
 "items": [
  {
   "snippet": {
    "publishedAt": "2016-12-07T16:04:40.472Z",
    "displayMessage": "a"
   }
  }
 ]
}

问题是我只想要最后一个评论,而不是整个200(不能设置得更低)我的第一个想法是保存整个响应并将它与下一个比较,所以我知道什么是新的,但那不会真的锻炼

1 个答案:

答案 0 :(得分:0)

好的,所以从评论中我知道你在谈论Live Streaming API。

你得到的是消息,而不是评论。是的,正如doc所说,"可接受的值是200到2000,包括两者。默认值为500。"因此,您可以获得整个200,然后按时间戳排序以获取最新消息。

怎么做?

当你在C#中这样做时,一旦你有了json字符串,你需要使用一些库,例如Json.NET。向此添加NuGet包引用后,您将需要

using Newtonsoft.Json.Linq;

并说你的json字符串是

var json = @"{
  ""items"": [
    {
      ""snippet"": {
        ""publishedAt"": ""2016-12-07T16:04:40.472Z"",
        ""displayMessage"": ""a""
      }
    }
    ,
    {
      ""snippet"": {
        ""publishedAt"": ""2016-12-12T16:04:40.472Z"",
        ""displayMessage"": ""b""
      }
    }
  ]
}";

然后,如本documentation所述,使用JObject.Parse使用LINQ to JSON。

var parsedJson = JObject.Parse(json);
JArray items = parsedJson.SelectToken("items") as JArray;
var sortedItems = items.OrderByDescending(item => item["snippet"]["publishedAt"]);
// sortedItems.First() will give you the item with the newest timestamp

将所有这些放在https://dotnetfiddle.net/ubQAZV

或者,如果您希望反序列化为强类型代码,则可以使用JsonConvert。 关于它的更多信息here