2016-11-04 2 views
1

У меня есть следующий код:JSON.NET: получение json из внешнего источника с потоками, как получить только одно значение?

static void Main(string[] args) 
{ 
    HttpClient client = new HttpClient(); 

    using (Stream stream = client.GetStreamAsync("https://opendata.rdw.nl/resource/8ys7-d773.json?kenteken=61SFSL").Result) 
    using (StreamReader streamReader = new StreamReader(stream)) 
    using (JsonReader reader = new JsonTextReader(streamReader)) 
    { 
     JsonSerializer serializer = new JsonSerializer(); 

     // read the json from a stream 
     // json size doesn't matter because only a small piece is read at a time from the HTTP request 


     //What do I do here to get my one value? 


    } 

    Console.WriteLine("Press any key to continue..."); 
    Console.Read(); 
} 

я получил это из документации по на сайте Json.NET. Причина в том, что я не хочу загружать всю строку, но по частям. Ответ заключается в следующем:

[{"brandstof_omschrijving":"Benzine","brandstof_volgnummer":"1","brandstofverbruik_buiten":"6.60","brandstofverbruik_gecombineerd":"8.20","brandstofverbruik_stad":"11.10","co2_uitstoot_gecombineerd":"196","emissiecode_omschrijving":"Euro 4","geluidsniveau_rijdend":"71","geluidsniveau_stationair":"82","kenteken":"61SFSL","milieuklasse_eg_goedkeuring_licht":"70/220*2001/100B","nettomaximumvermogen":"99.00","toerental_geluidsniveau":"4125"}] 

есть, он возвращает массив с одним объектом JSON, и я хочу, чтобы получить только одно значение в там, используя поток. Как я могу это сделать?

+0

Вы создаете много проблем для себя. Вы в основном переписываете парсер. – Nkosi

+0

Хорошо ... Так что вы предлагаете? –

+0

какой-либо конкретной причины вы не можете загрузить результат? это довольно большой объем данных? – Nkosi

ответ

1

Вы можете попробовать следующее

using System; 
using System.Net.Http; 
using Newtonsoft; 

public class Program { 

    public static void Main() { 
     var client = new HttpClient(); 
     var json = client.GetStringAsync("https://opendata.rdw.nl/resource/8ys7-d773.json?kenteken=61SFSL").Result; 
     var data = JsonConvert.DeserializeObject<dynamic>(json); 
     string value = data[0].co2_uitstoot_gecombineerd; 
     Console.WriteLine(value); 
     Console.WriteLine("Press any key to continue..."); 
     Console.Read(); 
    } 
}