【问题标题】:Parsing WordPress REST API post tags解析 WordPress REST API 帖子标签
【发布时间】:2014-01-15 14:39:28
【问题描述】:

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

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

Here's some example JSON,REST API 为/posts 返回的地址

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

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

因此,在事先不知道标签的情况下,如何获取帖子的标签是一个挑战。

我正在使用 .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; }
    }

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

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

但是,它感觉很hacky,我想要一种更清洁的方式。

所以 - 有谁知道 -

  1. 我可以发送某种查询字符串参数或执行其他操作以使其返回集合吗?
  2. .NET 中是否有比使用dynamic 类型更好的方法以便我可以拥有强类型标签?

【问题讨论】:

    标签: c# json wordpress .net-4.5


    【解决方案1】:

    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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-04-27
      • 2018-04-05
      • 1970-01-01
      • 2015-12-27
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      相关资源
      最近更新 更多