2017-05-09 57 views
0

我有以下来自服务器的响应,看起来像这样JSON字符串:如何分割多JSON数据结果

{ 
    "resultCount": 2, 
    "results": [ 
    { 
     "apartmentNo": "", 
     "city": "BEOGRAD", 
     "floor": "", 
     "houseNo": "99", 
     "houseNo2": "", 
     "phoneNo": "011\/000-0000", 
     "postalCode": "11000", 
     "region": "SOME REGION", 
     "street": "SOME STREET", 
     "firstName": "FNAME", 
     "lastName": "LNAME" 
    }, 
    { 
     "apartmentNo": "", 
     "city": "BEOGRAD", 
     "floor": "", 
     "houseNo": "99", 
     "houseNo2": "", 
     "phoneNo": "011\/000-0000", 
     "postalCode": "11000", 
     "region": "SOME REGION", 
     "street": "SOME STREET", 
     "firstName": "FNAME", 
     "lastName": "LNAME" 
    } 
    ] 
} 

如可以看出,有两个结果在JSON响应属于“结果”它被分隔为{... first ...},{... second ...}。我已经知道如何处理只有一个结果,但我应该如何处理像这个json例子一样的两个或多个结果?

我想将此数据添加到数据网格视图以向用户显示结果。

我的代码来解析一个结果是:

JObject o = JObject.Parse(responseText); 
string ime = o["results"]["firstName"].ToString(); 
string prezime = o["results"]["lastName"].ToString(); 
string adresa = o["results"]["street"].ToString() + " " + o["results"]["houseNo"].ToString(); 
string mesto = o["results"]["city"].ToString(); 
string pbroj = o["results"]["postalCode"].ToString(); 
string tel = o["results"]["phoneNo"].ToString(); 

dataGridView1.Rows.Clear(); 
dataGridView1.Rows.Add(ime, prezime, adresa, mesto, pbroj, tel); 

我还发现了一个方法,在这里,以识字trought使用jtokens所有孩子的,但必须有这些分析在等多个阵列的一个更好的办法,我正在使用Newtonsoft.Json。

非常感谢。

+0

'o.Value <列表>( “结果”)'? –

+0

将其强制转换为强类型对象并使用Newtonsoft Json库反序列化到模型中可能会更容易。有一个强类型的模型也可以帮助你绑定到网格很容易:) – daveBM

回答

3

你可以只使用一个POO /模型像下面

public class Result 
{ 
    public string apartmentNo { get; set; } 
    public string city { get; set; } 
    public string floor { get; set; } 
    public string houseNo { get; set; } 
    public string houseNo2 { get; set; } 
    public string phoneNo { get; set; } 
    public string postalCode { get; set; } 
    public string region { get; set; } 
    public string street { get; set; } 
    public string firstName { get; set; } 
    public string lastName { get; set; } 
} 

public class RootObject 
{ 
    public int resultCount { get; set; } 
    public List<Result> results { get; set; } 
} 

并解析它像这样

var root = JsonConvert.DeserializeObject<RootObject>("your json here "); 
+0

写作一样的答案.. –

+0

我也是!他说:P – daveBM

+0

upvoted已经 –