2013-11-21 131 views
1

我的問題POCO類是什麼,我都問here反序列化JSON與嵌套選擇

我只是想JSON數據deserilize到C#定製POCO類,如下圖所示,在這裏延續是我已經這樣做了遠;

public static UserItem DownloadJSONString(string urlJson) 
{ 
    var root = JsonConvert.DeserializeObject<RootObject>(json); 
    var userItem = root.results 
         .Select(i => new UserItem 
         { 
          id = i.id, 
          name = i.name, 
          title = i.title, 

          //tried using `Any` but does not seems work... 
          audience = (from _tag in root.results.SelectMany(x => x.tags) //<<< 
             select new Audience { id = _tag.Id .....}).ToList() 

         }).ToList(); 

     return userItem;   
} 

這裏是我的JSON對象(生成JSON到C#類)

public class Tags 
{ 
    public List<object> audience { get; set; } 
}  

public class Results 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public Tags tags { get; set; } 
} 

public class RootObject 
{ 
    public Meta meta { get; set; } 
    public Results results { get; set; } 
} 

這裏是我的簡單UserItem POCO類

public class UserItem 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public string title { get; set; } 
    public Audience audience { get; set; } 
} 

public class Audience 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
} 
+0

'受衆'屬性不是強類型?這只是一個列表'。你打算如何將其轉換爲「Audience」類型? –

+0

我不確定,我使用http://json2csharp.com/#這就是它給我的'對象' –

+0

好吧,JSON對於'tags'看起來是什麼樣的? –

回答

0

就像所有的其他人爲它建立一個類,它將被反序列化成它:

public class TagAudience 
{ 
    public string id { get; set; } 
    public string name { get; set; } 
} 

然後代替List<object>Tags類,使用List<TagAudience>。最後,當你想得到那些:

audience = i.Tags.audience 
    .Select(ta => new Audience 
    { 
     id = ta.id, 
     name = ta.name 
    }).FirstOrDefault() 
+0

而不是'i.Tags.audience'我在做'root.results.Tags.audience ' - 感謝您的幫助。 –

+0

@AbuHamzah,我很高興我可以幫助! –