gpt4 book ai didi

c# - 使用 C# 反序列化 JSON 数据

转载 作者:行者123 更新时间:2023-12-01 22:19:59 25 4
gpt4 key购买 nike

我是 C# 的新用户,我的代码遇到一些问题。我无法反序列化 JSON 数据,也不明白为什么:

            webRequest = (HttpWebRequest)WebRequest.Create("http://" + Ip.ToString() + ":" + Port.ToString() + "........"); // Create a request to get server info
webRequest.Method = "GET";
webRequest.KeepAlive = true;
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.CookieContainer = cookieJar; //set container for HttpWebRequest

webResponse = (HttpWebResponse)webRequest.GetResponse(); // Get the response.

reader = new StreamReader(webResponse.GetResponseStream());
ServerInfo outObject = JsonConvert.DeserializeObject<ServerInfo>(reader.ToString());
my_label_ServerInfo.Text = outObject.message;

服务器信息类:

    public class ServerInfo
{
public string message { get; set; }
public string message_timestamp { get; set; }
}

最佳答案

在 C# 中,

reader.ToString()

默认返回类的名称。在本例中,“System.IO.StreamReader”

你想要的是

reader.ReadToEnd()

它将以字符串形式返回流的全部内容。

这应该会使其正常工作,但请注意这不是最佳实践。当您进一步了解 C# 时需要考虑的几个方面:

  • 正如 Aron 提到的,您应该将所有流和读者包装在 "using" statement 中。利用Dispose pattern这会让运行时知道它可以立即释放资源,而不是 waiting for the finalizer
  • 正如 Fred 在他的代码中演示的那样,您可以避免将流转换为字符串,而只需让 Json.Net 库执行此操作。
  • 为了确保正确转义和格式化请求 URL,您可以使用 UriBuilder类: new UriBuilder("http", ip, port, path).Uri)
  • 您可以使用较新的 async友好HttpClient下载数据的类。

关于c# - 使用 C# 反序列化 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29449126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com