2013-03-11 67 views
1

我想从我的linq响应中返回地址信息。我很接近,但无法得到最后一刻。我需要每个条目的所有地址信息。使用JSON.NET和数组解析JSON响应&LINQ

有人可以协助最后一点吗?

var allCentres = from p in obj["early_child_centres"] 
      select p["address"].Children(); 

      foreach (var item in allCentres) 
      { 
       Console.WriteLine(item); 
      } 

{ 

"early_child_centres": [ 
{ 

    "centre_name": "Arncliffe Early Childhood Centre", 

    "address": { 
    "street_name": "12 Firth St", 
    "suburb": "Arncliffe", 
    "state": "NSW", 
    "postcode": "2205", 
    "phone": "9599 2896" 
    }, 
    "special_notes": "", 

}, 

] 
} 

回答

2

您可以使用实体反序列化JSON:

[DataContract] 
public class Center 
{ 
    [DataMember(Name = "center_name")] 
    public string Name { get; set; } 
    [DataMember(Name = "special_notes")] 
    public string SpecialNotes { get; set; } 
    [DataMember(Name = "address")] 
    public Address Address { get; set; } 

    public Center() { this.Address = new Address();} 
} 

[DataContract] 
public class Address 
{ 
    [DataMember(Name = "street_name")] 
    public string StreetName { get; set; } 
    [DataMember(Name = "suburb")] 
    public string Suburb { get; set; } 
    [DataMember(Name = "state")] 
    public string State { get; set; } 
    [DataMember(Name = "postcode")] 
    public string Postcode { get; set; } 
    [DataMember(Name = "phone")] 
    public string Phone { get; set; } 
} 

并与反序列化:

List<Center> centers = JsonConvert.DeserializeObject<List<Center>>(obj["early_child_centres"].ToString()); 

然后,你的LINQ要求:

from c in center 
select c.Address 
+0

嗨乔佛里,谢谢你为我提供这样一个简洁而完整的答案。它像一种享受。 – user686483 2013-03-16 01:35:01