C#JsonProperty(PropertyName)多维数组

时间:2017-03-14 05:12:06

标签: c# asp.net json wordpress

我正在开发一个使用Wordpress V2 api提要的项目 它返回类似于以下内容的Json:

{
  "link": "http://website.com.au/seabourns-antarctica-2/",
  "title": {
    "rendered": "Some Title"
  }
}

我可以使用:

[JsonProperty(PropertyName = "link")]
public string Url { get; set; }

分配第一个,但我不确定是否有一种简单的方法来获取title.rendered字符串。

以下内容对我不起作用:

[JsonProperty(PropertyName = "title.rendered")]
public string Title { get; set; }

2 个答案:

答案 0 :(得分:0)

Title不是多维数组。这是一个具有一个属性的对象 您可以为Title定义一个类并使用它。

public class Obj
{
    [JsonProperty(PropertyName = "link")]
    public string Url { get; set; }

    [JsonProperty(PropertyName = "title")]
    public Title Title { get; set; }
}

public class Title 
{
    [JsonProperty(PropertyName = "rendered")]
    public class Rendered { get; set; }
}

// Usage:
Console.WriteLine(obj.Url); 
Console.WriteLine(obj.Title.Rendered);

由于对象是JSON中的键值关联数组,如果所有属性都是纯字符串,您也可以将其反序列化为Dictionary<string, string>。此方法方法的可用性和便利性取决于使用情况和具体情况:

public class Obj
{
    [JsonProperty(PropertyName = "link")]
    public string Url { get; set; }

    [JsonProperty(PropertyName = "title")]
    public Dictionary<string, string> Title { get; set; }
}

// Usage:
Console.WriteLine(obj.Url); 
Console.WriteLine(obj.Title["rendered"]); 

请注意,在这种情况下,此代码将导致运行时错误:

Console.WriteLine(obj.Title["notexisting"]); 

答案 1 :(得分:0)

你的课就像

public class Title
{
    public string rendered { get; set; }
}

public class RootObject
{
    public string link { get; set; }
    public Title title { get; set; }
}

然后解析这个json你应该这样做

RootObject obj = JsonConvert.Deserailize<RootObject>("jsonString");