2016-09-15 4 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; 
      } 

     } 


    } 
関連する問題