如何从 API 转换一些 RAW 数据并将其保存到变量中,以便我可以在 C# 中使用它们
Posted
技术标签:
【中文标题】如何从 API 转换一些 RAW 数据并将其保存到变量中,以便我可以在 C# 中使用它们【英文标题】:How to convert some RAW data from an API and save it into variables so i can work with them in C# 【发布时间】:2020-08-16 05:10:48 【问题描述】:我正在做一个个人项目。它是一个使用 API 与一些 Web 服务通信的 C# 应用程序。
我终于用这几行得到了第一个原始数据:
var client = new RestClient("https://api.abcd.com/token");
var request = new RestRequest(Method.POST);
request.AddParameter("username", usr);
request.AddParameter("password", pass);
request.AddParameter("grant_type", "password");
在邮递员中,响应(JSON)看起来像:
"access_token":"aaaaaaa","token_type":"bearer","expires_in":899,"refresh_token":"bbbbbbb",".issued":"周五, 2020 年 5 月 1 日 16:11:36 GMT",".expires":"2020 年 5 月 1 日星期五 16:26:36 GMT",".refreshexpires":"2020 年 5 月 1 日星期五 17:11:36 GMT"
我的下一步是在 C# 中找到将这些键/值对分成不同变量的方法,以便我可以使用它们。
非常感谢您的帮助。
【问题讨论】:
快速的 stackoverlfow 搜索会为您找到这个问题的很多答案。您正在尝试将字符串数组转换回 C# 字典 - 例如 ***.com/questions/1385421/…。 我已经搜索了 2 天的答案......但没有任何效果......直到下面发布了一些东西......但无论如何感谢您的帮助。 【参考方案1】:但我猜出于小目的不需要创建一个类,而是使用这样的弱类型数据结构:
dynamic responseObject = JsonConvert.DeserializeObject(responseString);
//then use every property like this
responseObject.accessToken ...
responseObject.token_type.....
但您也需要为此使用 Newtonsoft.Json。
【讨论】:
【参考方案2】:您想使用 JSON 反序列化器来执行此操作。
所以你会创建一个类:
public class Response
public string accessToken get; set;)
public string token_type get; set;)
.....
然后使用类似 Newtonsoft.Json(可从 NuGet 获得)之类的东西来反序列化:
using Newtonsoft.Json;
.....
var response = JsonConvert.Deserialise<Response>([RAW TEXT FROM REST CLIENT]);
【讨论】:
【参考方案3】:您可以考虑使用 Json.Net,它允许您将 JSON 反序列化为像这样的对象。请注意,您需要下载该软件包,然后添加using Newtonsoft.Json;
"varone":"valueone"
public class MyJsonClass
//JsonProperty isn't strictly required but I personally think it helps when trying to deserialize for sanity sake
[JsonProperty("varone")]
public string VarOneValue get; set; //The value will be "valueone" on deserialization
var myobj = JsonConvert.DeserializeObject<MyJsonObject>(JSONDATA);
Console.Write(myobj.VarOneValue); //Will be "valueone"
Nuget CLI:Install-Package Newtonsoft.Json
页面:https://www.newtonsoft.com/json
【讨论】:
以上是关于如何从 API 转换一些 RAW 数据并将其保存到变量中,以便我可以在 C# 中使用它们的主要内容,如果未能解决你的问题,请参考以下文章
使用 JMeter,如何从 API 的响应正文中提取字符串并将其保存到 csv 文件?
如何读取从 API 检索到的 JSON 并将其保存到 CSV 文件中?
PLCrashReporter - 如何直接从 Xcode 本身将 .plcrash 转换为 .crash 并将其保存在本地