2016-09-15 1 views
0

Я имею в виду, это часть моего кода:Используйте поток непосредственно к разбору вместо сохранения файла

// Create the web request (posts/1) 
HttpWebRequest request = WebRequest.Create("https://jsonplaceholder.typicode.com/posts/1") as HttpWebRequest; 
// Get response 
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
{ 
    // Get the response stream 
    StreamReader reader = new StreamReader(response.GetResponseStream()); 

    { 
     string myString = reader.ReadToEnd(); 
     System.IO.File.WriteAllText(@"C:\Users\admin\Documents\Visual Studio 2015\Projects\WriteText.json", myString); 
    } 


    // JSON deserialize from a file 
    String JSONstring = File.ReadAllText(@"C:\Users\admin\Documents\Visual Studio 2015\Projects\WriteText.json"); 
    // List<PARSE> pList = JsonConvert.DeserializeObject<List<PARSE>>(JSONstring); 
    PARSE pList = JsonConvert.DeserializeObject<PARSE>(JSONstring); 

Как я могу сделать эту вещь без сохранения потока и снова загружая его в строку. Я хочу использовать мой поток непосредственно в String 'JSONstring', а затем проанализировать его.

ответ

1

Ваш код содержит решение

// Create the web request (posts/1) 
HttpWebRequest request = WebRequest.Create("https://jsonplaceholder.typicode.com/posts/1") as HttpWebRequest; 
// Get response 
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
{ 
    // Get the response stream 
    StreamReader reader = new StreamReader(response.GetResponseStream()); 

    { 
     //string myString = reader.ReadToEnd(); 
     //System.IO.File.WriteAllText(@"C:\Users\admin\Documents\Visual Studio 2015\Projects\WriteText.json", myString); 
    } 


    // JSON deserialize from a file 
    // String JSONstring = File.ReadAllText(@"C:\Users\admin\Documents\Visual Studio 2015\Projects\WriteText.json"); 
    // List<PARSE> pList = JsonConvert.DeserializeObject<List<PARSE>>(JSONstring); 
    PARSE pList = JsonConvert.DeserializeObject<PARSE>(reader.ReadToEnd()); 

    reader.close(); 
1

Вот пример того, как разобрать HTTP-поток в Json (без обработки ошибок). Поиграйте с ним и сообщите нам, если вы столкнетесь с чем-то конкретным. В этом коде. API_Json класс с десериализованными классами, и я десериализация API_Json.RootObject:

public async Task<API_Json.RootObject> walMart_Lookup(string url) 
    { 
     lookupIsWorking = true; 
     HttpClientHandler handler = new HttpClientHandler() 
     { 
      AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate 
     }; 
     using (HttpClient http = new HttpClient(handler)) 
     { 

      http.DefaultRequestHeaders.AcceptEncoding.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue("gzip")); 
      http.Timeout = TimeSpan.FromMilliseconds(Timeout.Infinite); 
      url = String.Format(url); 
      using (var response = await http.GetAsync(url, HttpCompletionOption.ResponseHeadersRead)) 
      { 
       Console.WriteLine(response); 
       var serializer = new JsonSerializer(); 

       using (StreamReader sr = new StreamReader(await response.Content.ReadAsStreamAsync())) 
       { 
        using (var jsonTextReader = new JsonTextReader(sr)) 
        { 
         var root = serializer.Deserialize<API_Json.RootObject>(jsonTextReader); 
         lookupIsWorking = false; 
         return root; 

        } 
       } 

       //var obj = (API_Json_Special_Feeds.RootObject)serializer.Deserialize(sr, typeof(API_Json_Special_Feeds.RootObject)); 
       //return obj; 
      } 

     } 


    } 

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

  • Нет связанных вопросов^_^