解析WordPress REST API帖子标签

时间:2014-01-15 14:39:29

标签: c# json wordpress .net-4.5

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

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

REST API为/posts

返回的

Here's some example JSON

您会注意到,上述示例中返回的第一篇文章(在撰写本文时)标记为facebookGooglePublicizeSharing和{ {1}}。

然而,与JSON格式的方式有些不一致。而不是表示为数组中的每个对象都具有一致属性(名称,段塞,描述) - 允许我简单地迭代数组 - 每个标记似乎都表示为自己的对象,对象的名称是名称的标签。以下是它在JSON Viewer中的显示方式:

Visualisation of JSON data

因此,如果事先不知道标签,就会遇到如何获取帖子标签的挑战。

我正在使用.NET 4.5的twitter所以我使用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; } } 并访问名称,slug等,如下所示:

Newtonsoft.Json.Linq.JProperty

然而,它感觉非常hacky,我想要一种更清洁的方式。

所以 - 有谁知道 -

  1. 我可以发送某种querystring参数或做其他事情让它返回一个集合吗?
  2. 在.NET中有比使用foreach (var wordpressPost in parseJsonResult.posts) { foreach (var tag in wordpressPost.Tags) { string tagName = tag.Value.name; string tagSlug = tag.Value.slug; } } 类型更好的方式,所以我可以使用强类型标签吗?

1 个答案:

答案 0 :(得分:0)

JSON中的对象实际上是关联数组(又名:hash,dictionaries),你可以在其上循环,就像任何其他数组一样。

在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

希望这会有所帮助。