2015-10-06 2 views
0

Недавно я получил встречу, где мне нужно загрузить некоторые данные из Облака с помощью REST API и сохранить значения из этой «строки» в объекте или в некоторых переменных. Загрузка выполнена, все, что мне нужно сделать сейчас, - это как-то разобрать данные.Значения из форматированной строки JSON (из REST API) в C#

До сих пор я не сделал такой код:

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

Deserializing - это то, что вы ищете! –

+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;} 
    .... 
} 

затем использовать Deserialize

Json.Deserialize<jsonData>(yourstring) 
+0

Спасибо, я думаю, что смогу что-то справиться. Все, что мне было нужно, это некоторое десериализация времени исполнения: [link] (http://blog.anthonybaker.me/2013/05/how-to-consume-json-rest-api-in-net.html) – Norbert

+0

счастлив помощь, пожалуйста, отметьте как ответ – stackoverfloweth

Смежные вопросы