簡體   English   中英

使用Visual Studio 2017將C#JSON轉換為字符串

[英]C# JSON to String with Visual Studio 2017

我正在Visual Studio 2017中構建UWP應用,我想將Office365 REST API的JSON響應轉換為字符串,以在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 Apps。

DataContractJsonSerializer也無法轉換為char。

所以即時通訊用盡了可能的解決方案/監督了我犯的一個大錯誤。

更改

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成員訪問這些字節,並使用該成員上的方法來指示應如何處理這些字節( 包括以Stream的形式訪問它們 )。

在您的情況下,您指示需要一個字符串,因此可以使用ReadAsStringAsync()

您需要GetResponse...。

Stream receiveStream = response.GetResponseStream ();
StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);
txtBlock.Text = readStream.ReadToEnd();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM