我正在尝试获取与WordPress帖子相关的类别和标签。
这是一个安装了Jetpack插件的自托管安装,因此我正在使用WordPress.com Rest API进行查询。
REST API为/posts
返回的您会注意到,上述示例中返回的第一篇文章(在撰写本文时)标记为facebook
,Google
,Publicize
,Sharing
和{ {1}}。
然而,与JSON格式的方式有些不一致。而不是表示为数组中的每个对象都具有一致属性(名称,段塞,描述) - 允许我简单地迭代数组 - 每个标记似乎都表示为自己的对象,对象的名称是名称的标签。以下是它在JSON Viewer中的显示方式:
因此,如果事先不知道标签,就会遇到如何获取帖子标签的挑战。
我正在使用.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,我想要一种更清洁的方式。
所以 - 有谁知道 -
foreach (var wordpressPost in parseJsonResult.posts)
{
foreach (var tag in wordpressPost.Tags)
{
string tagName = tag.Value.name;
string tagSlug = tag.Value.slug;
}
}
类型更好的方式,所以我可以使用强类型标签吗?答案 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
希望这会有所帮助。