繁体   English   中英

解析WordPress REST API帖子标签

[英]Parsing WordPress REST API post tags

我正在尝试获取与WordPress帖子相关的类别和标签。

这是一个自托管的安装,安装了Jetpack插件并且可以正常工作,因此我正在使用WordPress.com Rest API进行查询。

这是 REST API为/posts返回的一些示例JSON

您会注意到,在上述示例中(在撰写本文时)返回的第一篇文章被标记为facebookGooglePublicizeSharingtwitter

但是,JSON的格式存在一些不一致之处。 与其被表示为数组,数组中的每个对象都具有一致的属性(名称,子句,描述)-允许我简单地对数组进行迭代-每个标签似乎都表示为自己的对象,而对象的名称为名称标签。 这是它在JSON Viewer中的显示方式:

可视化JSON数据

因此,在不事先知道标签的情况下,就提出了如何获取帖子标签的挑战。

我使用的是.NET 4.5的HttpClient所以我使用dynamic类型来解决了这一问题:

public class WordpressBlogPost : IBlogPost
    {
        // IBlogPost implementation
        public DateTime Date { get; set; }
        public DateTime Modified { get; set; }
        public string Title { get; set; }
        public string URL { get; set; }
        public string Content { get; set; }
        public string Excerpt { get; set; }
        public dynamic Tags { get; set; }
        public string Featured_Image { get; set; }
        public int Comment_Count { get; set; }
    }

然后,您可以迭代Tag,每个都是Newtonsoft.Json.Linq.JProperty并访问名称,子弹等,如下所示:

foreach (var wordpressPost in parseJsonResult.posts)
{
    foreach (var tag in wordpressPost.Tags)
    {
        string tagName = tag.Value.name;
        string tagSlug = tag.Value.slug;
    }
}

但是,它感觉很hacky,我想要一种更干净的方法。

所以-有人知道-

  1. 我可以发送某种querystring参数还是做其他事情来获取返回的集合?
  2. .NET中有没有比使用dynamic类型更好的方法,所以我可以使用强类型标记?

JSON中的对象实际上是关联数组(也称为哈希,字典),您可以像其他数组一样在它们上循环。

在C#中,您可以这样做:

foreach(KeyValuePair<string, string> entry in MyDic)

另请参阅https://stackoverflow.com/questions/141088/what-is-the-best-way-to-iterate-over-a-dictionary-in-c

希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM