簡體   English   中英

C#從Json字符串獲取值

[英]C# Get values from a Json string

我正在使用REST從API獲取Json字符串,並且試圖在控制台中顯示Json字符串中的值,但無法這樣做。 每次我在網上查看一個有效的示例時,它似乎都不適合我。

這是API返回的Json字符串:

{"error":false,"players":[{"name":"Beyluta","steamId":"76561198078571545","discordId":"407309344456179713","insertDate":"2018-11-18 12:31:31","language":"br"}]}

這是我正在使用的代碼:

public class UserInfo
{
    public string name { set; get; }
    public string discordId { set; get; }
    public string steamId { set; get; }
}

private void getPendingPlayersTimer_Elapsed(object sender, ElapsedEventArgs e)
    {
        var request = System.Net.WebRequest.Create($"http://localhost/bf/api/GetPendingPlayers.php");

        request.Timeout = 1000;
        request.Method = "GET";
        request.Headers.Add("x-api-key", apiClass.ApiKey);
        request.ContentType = "application/json";

        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        using (Stream stream = response.GetResponseStream())
        using (StreamReader reader = new StreamReader(stream))
        {
            var rawJson = new StreamReader(response.GetResponseStream()).ReadToEnd();

            var details = JObject.Parse(rawJson);

            Console.WriteLine(string.Concat("SteamID: ", details["steamId"]));
        }
    }

控制台返回:控制台返回的屏幕快照

我以前從未使用過此工具,因此我沒有其他潛在客戶,幾乎我在網上發現的所有其他解決方案都導致了同樣的問題。

該程序只需要在UserInfo類中顯示三個變量。

我注意到的一件事:

string jsonData = @"{  
        'steamId':'000000000000',  
        'discordId':'1111111111'  
        }";

使用上面的格式,我能夠很好地讀取值,但是我必須使用API​​傳遞給我的字符串。

可能是什么問題?

瑞安·威爾遜的答案是正確的,下面的代碼工作正常!

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    using (Stream stream = response.GetResponseStream())
    using (StreamReader reader = new StreamReader(stream))
    {
        var rawJson = new StreamReader(response.GetResponseStream()).ReadToEnd();

        var details = JObject.Parse(rawJson);

        Console.WriteLine(string.Concat("SteamID: ", ["players"][0]["steamId"]));
    }
}

暫無
暫無

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

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