如何将包含 api 中的数据的字符串放入 HashMap 或 Dictionary 中?
How I can put a string contain data from an api into a HashMap or Dictionary?
我是 c# 的新手,我创建了一个库,其中包含从 API 到字符串
的货币汇率
using System.Net;
namespace RateLib
{
public class CurrencyRate
{
public void getRate()
{
string url = "apikey";
WebClient myClient = new WebClient();
string txt = myClient.DownloadString(url);
}
}
}
现在,如何将这个 txt
字符串放入散列映射(如果它确实存在于 c# 中)或字典中?
我认为您想要的是将 json 反序列化为 class,其中包含您的费率的 IDictionary。为此,我们将使用 System.Text.Json
的 JsonSerializer.Deserialize.
像这样:
public class Latest
{
public string Disclaimer { get; set; }
public string License { get; set; }
public int Timestamp { get; set; }
public string Base { get; set; }
public IDictionary<string, double> Rates { get; set; }
}
public static void Main()
{
var url = "https://openexchangerates.org/api/latest.json?app_id=69cb235f2fe74f03baeec270066587cf";
var myClient = new WebClient();
var json = myClient.DownloadString(url);
var options = new JsonSerializerOptions{PropertyNamingPolicy = JsonNamingPolicy.CamelCase};
var latest = JsonSerializer.Deserialize<Latest>(json, options);
Console.WriteLine(latest.Rates.First());
}
产出
[AED, 3.6732]
最后,这个 apikey 似乎有效。既然它暴露在世人面前,您可能想改变它。
我是 c# 的新手,我创建了一个库,其中包含从 API 到字符串
的货币汇率using System.Net;
namespace RateLib
{
public class CurrencyRate
{
public void getRate()
{
string url = "apikey";
WebClient myClient = new WebClient();
string txt = myClient.DownloadString(url);
}
}
}
现在,如何将这个 txt
字符串放入散列映射(如果它确实存在于 c# 中)或字典中?
我认为您想要的是将 json 反序列化为 class,其中包含您的费率的 IDictionary。为此,我们将使用 System.Text.Json
的 JsonSerializer.Deserialize.
像这样:
public class Latest
{
public string Disclaimer { get; set; }
public string License { get; set; }
public int Timestamp { get; set; }
public string Base { get; set; }
public IDictionary<string, double> Rates { get; set; }
}
public static void Main()
{
var url = "https://openexchangerates.org/api/latest.json?app_id=69cb235f2fe74f03baeec270066587cf";
var myClient = new WebClient();
var json = myClient.DownloadString(url);
var options = new JsonSerializerOptions{PropertyNamingPolicy = JsonNamingPolicy.CamelCase};
var latest = JsonSerializer.Deserialize<Latest>(json, options);
Console.WriteLine(latest.Rates.First());
}
产出
[AED, 3.6732]
最后,这个 apikey 似乎有效。既然它暴露在世人面前,您可能想改变它。