[英]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.