作者:a171759015_753 | 来源:互联网 | 2022-12-02 08:06
我有一些C#代码使HTTP Web请求获取访问令牌.该对象以下列格式返回:
{
"error_code": 0,
"access_token": "*******************",
"expires_in": 7200
}
我目前正在将请求设置为字符串对象并进行修剪.但这似乎很脆弱,容易失败.我想像这样抓住令牌.
string myToken = httpWebResponse.access_token
所以我在看到这个堆栈溢出帖后开始研究Json.NET.
在C#中解析Json休息api响应
这正是我想要做的.但是,我似乎无法遵循他接受的答案,因为他的回答对象有一个标题("回应"),而我的回答没有.
我决定查看文档以找到答案,我也在那里找到答案.
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();
}
但是,当我取消注释解析行时,我只会收到错误.
任何帮助将不胜感激.
1> Aleks Andree..:
创建一个类
[DataContract]
public class Response
{
[DataMember(Name = "error_code")]
public int ErrorCode { get; set; }
[DataMember(Name = "access_token")]
public string AccessToken { get; set; }
[DataMember(Name = "expires_in")]
public int ExpiresIn { get; set; }
}
并将您的json反序列化为强类型对象:
var json =
"{\r\n \"error_code\": 0,\r\n \"access_token\": \"*******************\",\r\n \"expires_in\": 7200\r\n}";
var respOnse= JsonConvert.DeserializeObject(json);
Console.WriteLine(response.AccessToken);