2017-05-09 50 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已經 –