C# 将流直接用于解析,而不是保存文件

C# 将流直接用于解析,而不是保存文件,c#,parsing,stream,C#,Parsing,Stream,我的意思是,这是我的一段代码: // 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 HttpWebResp

我的意思是,这是我的一段代码:

// 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);
//创建web请求(posts/1)
HttpWebRequest请求=WebRequest.Create(“https://jsonplaceholder.typicode.com/posts/1)作为HttpWebRequest;
//得到回应
使用(HttpWebResponse=request.GetResponse()作为HttpWebResponse)
{
//获取响应流
StreamReader=新的StreamReader(response.GetResponseStream());
{
字符串myString=reader.ReadToEnd();
System.IO.File.writealText(@“C:\Users\admin\Documents\Visual Studio 2015\Projects\WriteText.json”,myString);
}
//从文件反序列化JSON
String JSONstring=File.ReadAllText(@“C:\Users\admin\Documents\visualstudio 2015\Projects\WriteText.json”);
//List pList=JsonConvert.DeserializeObject(JSONstring);
PARSE pList=JsonConvert.DeserializeObject(JSONstring);

如何在不保存流并再次将其加载到字符串的情况下执行此操作。我希望将流直接用于字符串“JSONstring”,然后对其进行解析。

以下是如何将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;
            }

        }


    }
公共异步任务沃尔玛搜索(字符串url)
{
lookupIsWorking=true;
HttpClientHandler handler=新的HttpClientHandler()
{
AutomaticDecompression=DecompressionMethods.GZip | DecompressionMethods.Deflate
};
使用(HttpClient http=newhttpclient(handler))
{
http.DefaultRequestHeaders.AcceptEncoding.Add(新的System.Net.http.Headers.StringWithQualityHeaderValue(“gzip”);
http.Timeout=TimeSpan.frommilless(Timeout.Infinite);
url=String.Format(url);
使用(var response=wait http.GetAsync(url,HttpCompletionOption.ResponseHeadersRead))
{
控制台写入线(响应);
var serializer=new JsonSerializer();
使用(StreamReader sr=new StreamReader(wait response.Content.ReadAsStreamAsync())
{
使用(var jsonTextReader=new jsonTextReader(sr))
{
var root=serializer.Deserialize(jsonTextReader);
lookupIsWorking=false;
返回根;
}
}
//var obj=(API_Json_Special_Feeds.RootObject)序列化程序。反序列化(sr,typeof(API_Json_Special_Feeds.RootObject));
//返回obj;
}
}
}

下面是一个如何将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;
            }

        }


    }
公共异步任务沃尔玛搜索(字符串url)
{
lookupIsWorking=true;
HttpClientHandler handler=新的HttpClientHandler()
{
AutomaticDecompression=DecompressionMethods.GZip | DecompressionMethods.Deflate
};
使用(HttpClient http=newhttpclient(handler))
{
http.DefaultRequestHeaders.AcceptEncoding.Add(新的System.Net.http.Headers.StringWithQualityHeaderValue(“gzip”);
http.Timeout=TimeSpan.frommilless(Timeout.Infinite);
url=String.Format(url);
使用(var response=wait http.GetAsync(url,HttpCompletionOption.ResponseHeadersRead))
{
控制台写入线(响应);
var serializer=new JsonSerializer();
使用(StreamReader sr=new StreamReader(wait response.Content.ReadAsStreamAsync())
{
使用(var jsonTextReader=new jsonTextReader(sr))
{
var root=serializer.Deserialize(jsonTextReader);
lookupIsWorking=false;
返回根;
}
}
//var obj=(API_Json_Special_Feeds.RootObject)序列化程序。反序列化(sr,typeof(API_Json_Special_Feeds.RootObject));
//返回obj;
}
}
}

您的代码包含解决方案

// 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();
//创建web请求(posts/1)
HttpWebRequest请求=WebRequest.Create(“https://jsonplaceholder.typicode.com/posts/1)作为HttpWebRequest;
//得到回应
使用(HttpWebResponse=request.GetResponse()作为HttpWebResponse)
{
//获取响应流
StreamReader=新的StreamReader(response.GetResponseStream());
{
//字符串myString=reader.ReadToEnd();
//System.IO.File.writealText(@“C:\Users\admin\Documents\Visual Studio 2015\Projects\WriteText.json”,myString);
}
//从文件反序列化JSON
//String JSONstring=File.ReadAllText(@“C:\Users\admin\Documents\visualstudio 2015\Projects\WriteText.json”);
//List pList=JsonConvert.DeserializeObject(JSONstring);
PARSE pList=JsonConvert.DeserializeObject(reader.ReadToEnd());
reader.close();

您的代码包含解决方案

// 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();
//创建web请求(posts/1)
HttpWebRequest请求=WebRequest.Create(“https://jsonplaceholder.typicode.com/posts/1)作为HttpWebRequest;
//得到回应
使用(HttpWebResponse=request.GetResponse()作为HttpWebResponse)
{
//获取响应流
StreamReader=新的StreamReader(response.GetResponseStream());
{
//字符串myString=reader.ReadToEnd();
//System.IO.File.writealText(@“C:\Users\admin\Documents\Visual Studio 2015\Projects\WriteText.json”,myString);
}
//从文件反序列化JSON
//String JSONstring=File.ReadAllText(@“C:\Users\admin\Documents\visualstudio 2015\Projects\WriteText.json”)