2015-10-06 92 views
0

最近,我得到了一個約會,我需要使用它的REST API從雲端下載一些數據,並將該字符串的值存儲在對象或某些變量中。下載完成後,我現在需要做的就是解析數據。C#中JSON格式字符串的值(來自REST API)

到現在爲止我做了這樣的代碼:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("some link"); 

request.ContentType = "application/json; charset=utf-8"; 
request.Method = "GET"; 
request.Headers.Add("Carriots.apiKey", "key"); 
using (WebResponse response = request.GetResponse()) 
{ 
    using(Stream stream = response.GetResponseStream()) 
    { 
     StreamReader reader = new StreamReader(stream); 
     JObject json = JObject.Parse(reader.ReadToEnd()); 
     Console.WriteLine(json.ToString()); 
    } 
} 

這裏是輸出:

{ 
    "total_documents": 3, 
    "result": [ 
    { 
     "_id": "...", 
     "protocol": "v1", 
     "checksum": "", 
     "_t": "str", 
     "at": 1444134377, 
     "device": "-just a device-", 
     "data": { 
      "field1": "123", 
      "field2": "1536" 
     }, 
     "id_developer": "....", 
     "created_at": 1444134377, 
     "owner": "-someUser-" 
    } 
    ] 

}

我知道有很多解決方案,在互聯網上,但他們沒有一個做我需要的。好吧,我找到了一些東西,但是它在每一行上迭代並以這種方式檢查值,但在我的情況下,我可以擁有數千個這樣的輸出。

有什麼辦法可以做到這一點(我的意思是解析)使用某種內置函數或唯一的解決方案是迭代或寫一些正則表達式?

+0

你讀取JSON在C#或JS? – stackoverfloweth

+0

反序列化就是你要找的東西! –

+0

試試Linq to Json http://www.newtonsoft.com/json/help/html/LINQtoJSON.htm – Matteo

回答

-1

假設JSON將始終遵循這種格式,定義你的模型

public class jsonData{ 
    public int total_documents {get;set;} 
    public resultData result {get;set;} 
} 

public class resultData{ 
    public int _id {get;set;} 
    public string protocol {get;set;} 
    .... 
} 

然後用反序列化

Json.Deserialize<jsonData>(yourstring) 
+0

謝謝,我認爲我可以管理一些東西。我所需要的只是一些運行時反序列化:[link](http://blog.anthonybaker.me/2013/05/how-to-consume-json-rest-api-in-net.html) – Norbert

+0

很高興幫助,請標記爲答案 – stackoverfloweth