2013-11-21 132 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,我很高兴我可以帮助! –