【发布时间】:2014-01-15 14:39:28
【问题描述】:
我正在尝试获取与 WordPress 帖子相关的类别和标签。
这是一个安装了 Jetpack 插件并正常工作的自托管安装,所以我使用 WordPress.com Rest API 进行查询。
Here's some example JSON,REST API 为/posts 返回的地址
您会注意到,上述示例中返回的第一个帖子(在撰写本文时)被标记为 facebook、Google、Publicize、Sharing 和 twitter。
但是,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,我想要一种更清洁的方式。
所以 - 有谁知道 -
- 我可以发送某种查询字符串参数或执行其他操作以使其返回集合吗?
- .NET 中是否有比使用
dynamic类型更好的方法以便我可以拥有强类型标签?
【问题讨论】:
标签: c# json wordpress .net-4.5