2017-03-14 28 views
1

Wordpress V2 APIからのフィードを使用するプロジェクトに取り組んでいます。
それは次のようなJSONを返す:C#JsonProperty(PropertyName)多次元配列

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

私が使用することができる午前:

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

を最初の1を割り当てることが、取得するための簡単な方法があるかどうか、私はわからないんだけどtitle.rendered文字列。次のような

何かが私のために動作しないでしょう。

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

答えて

0

Titleは多次元配列ではありません。 1つのプロパティを持つオブジェクトです。
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"]); 
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");