如何从 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# 中使用它们的主要内容,如果未能解决你的问题,请参考以下文章

如何从API加载图像并将其保存到sqlite数据库中?

使用 JMeter,如何从 API 的响应正文中提取字符串并将其保存到 csv 文件?

如何读取从 API 检索到的 JSON 并将其保存到 CSV 文件中?

PLCrashReporter - 如何直接从 Xcode 本身将 .plcrash 转换为 .crash 并将其保存在本地

将数据从列表视图(从 Rest Api 生成)传递到另一个活动并将其保存到 SQLite 数据库中

Laravel,从api获取数据并将其保存在数据库中[关闭]