【发布时间】:2018-10-17 15:53:39
【问题描述】:
我有一些 C# 代码发出 HTTP Web 请求以获取访问令牌。该对象以以下格式返回:
{
"error_code": 0,
"access_token": "*******************",
"expires_in": 7200
}
我目前正在将请求设置为字符串对象并对其进行修整。但这似乎很脆弱并且容易失败。我想像这样抓住令牌。
字符串 myToken = httpWebResponse.access_token
所以我在看到这个堆栈溢出帖子后开始研究 Json.NET。
Parsing Json rest api response in C#
这正是我想要做的。但是,我似乎无法遵循他接受的答案,因为他的响应对象有一个标题(“响应”),而我的没有。
我决定查看文档以找到答案,但我也没有找到答案。 https://www.newtonsoft.com/json/help/html/SerializingJSONFragments.htm
他的回复有一个标题,在本例中为“结果”。
这是我的 C# 代码。
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + appId + "&secret=" + secret);
request.Method = "GET";
request.KeepAlive = false;
request.ContentType = "appication/json";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
/*
JSON Parse Attempt
JObject joResponse = JObject.Parse(response.ToString());
JArray array = (JArray)joResponse[""];
int id = Convert.ToInt32(array[0].ToString());
*/
//////////////////////////
string myResponse = "";
using (System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream()))
{
myResponse = sr.ReadToEnd();
}
return myResponse;
}
catch (Exception e)
{
return e.ToString();
}
但是当我取消注释解析行时,我只会得到一个错误。
任何帮助将不胜感激。
【问题讨论】:
-
为什么不直接反序列化为具有 3 个属性的自定义类?
-
你没有数组,只使用JObject。
-
@maccettura 因为我是一个不知道如何操作的 c# 菜鸟。当我用谷歌搜索如何做到这一点时,我一直被定向到 Json.Net。最简单的就是我所追求的。
-
@onTheInternet This page 在文档中应该是你所需要的全部
-
投反对票的能解释一下吗?我相信我已经遵守了规则,当然可以说像我这样的其他新手会发现这些信息很有价值。