C# JSON 到字符串 Visual Studio 2017
C# JSON to String with Visual Studio 2017
我正在 Visual Studio 2017 年构建一个 UWP 应用程序,我想将来自 Office365 REST API 的 JSON-Response 转换为一个字符串,以将其显示在 XAML.
HttpClient client2 = new HttpClient();
var token2 = await AuthenticationHelper.GetTokenHelperAsync();
client2.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
HttpResponseMessage eventresponse = await client2.GetAsync(new Uri("https://outlook.office.com/api/v2.0/me/calendarview?startDateTime=2017-01-01T00:00:00&endDateTime=2017-04-05T12:00:00"));
我无法获取 json.net,我猜它不兼容。
我尝试了以下方法:
using (Stream stream = eventresponse)
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
但是我无法将 HttpResponseMessage 转换为 System.IO.Stream。
JavaScriptSerializer 似乎不适用于 UWP 应用程序。
DataContractJsonSerializer 也无法转换为 char。
所以我 运行 不可能 Solutions/overseeing 我犯了一个大错误。
改变
using (Stream stream = eventresponse)
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
至
string responseString = await eventresponse.Content.ReadAsStringAsync();
或者像你的代码一样使用流..
if (eventresponse.IsSuccessStatusCode)
{
using (Stream stream = await eventresponse.Content.ReadAsStreamAsync())
{
using (StreamReader reader = new StreamReader(stream))
{
var responseString = reader.ReadToEnd();
}
}
}
就HttpResponseMessage
而言,响应主体是一系列字节。它与它们实际代表的内容无关。
您可以通过 Content
member and use methods on that member to direct how they the bytes should be processed (including accessing them as a Stream).
访问这些字节
在你的例子中你指出你想要一个字符串,所以你可以使用 ReadAsStringAsync()
.
您需要 GetResponse....
Stream receiveStream = response.GetResponseStream ();
StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);
txtBlock.Text = readStream.ReadToEnd();
我正在 Visual Studio 2017 年构建一个 UWP 应用程序,我想将来自 Office365 REST API 的 JSON-Response 转换为一个字符串,以将其显示在 XAML.
HttpClient client2 = new HttpClient();
var token2 = await AuthenticationHelper.GetTokenHelperAsync();
client2.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
HttpResponseMessage eventresponse = await client2.GetAsync(new Uri("https://outlook.office.com/api/v2.0/me/calendarview?startDateTime=2017-01-01T00:00:00&endDateTime=2017-04-05T12:00:00"));
我无法获取 json.net,我猜它不兼容。 我尝试了以下方法:
using (Stream stream = eventresponse)
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
但是我无法将 HttpResponseMessage 转换为 System.IO.Stream。
JavaScriptSerializer 似乎不适用于 UWP 应用程序。
DataContractJsonSerializer 也无法转换为 char。
所以我 运行 不可能 Solutions/overseeing 我犯了一个大错误。
改变
using (Stream stream = eventresponse)
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
至
string responseString = await eventresponse.Content.ReadAsStringAsync();
或者像你的代码一样使用流..
if (eventresponse.IsSuccessStatusCode)
{
using (Stream stream = await eventresponse.Content.ReadAsStreamAsync())
{
using (StreamReader reader = new StreamReader(stream))
{
var responseString = reader.ReadToEnd();
}
}
}
就HttpResponseMessage
而言,响应主体是一系列字节。它与它们实际代表的内容无关。
您可以通过 Content
member and use methods on that member to direct how they the bytes should be processed (including accessing them as a Stream).
在你的例子中你指出你想要一个字符串,所以你可以使用 ReadAsStringAsync()
.
您需要 GetResponse....
Stream receiveStream = response.GetResponseStream ();
StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);
txtBlock.Text = readStream.ReadToEnd();