如何将货币列表从 openexchangerates.org 反序列化为 C# 自定义类或对象

本文关键字:自定义 对象 反序列化 org 货币 列表 openexchangerates | 更新日期: 2023-09-27 18:33:51

我需要从这里获取 C# 中的货币值列表:http://openexchangerates.org/currencies.json

产生这种输出:

{
    "AED": "United Arab Emirates Dirham",
    "AFN": "Afghan Afghani",
    "ALL": "Albanian Lek",
    "AMD": "Armenian Dram",
    "ANG": "Netherlands Antillean Guilder",
    "AOA": "Angolan Kwanza"
        // and so on
}

我设法使用 C# 获取了一个包含上述值的字符串,但我找不到将该字符串反序列化为任何自定义类或匿名对象的方法,所以我想知道该怎么做?

另外,我正在尝试使用 Json.NET 来做到这一点,但到目前为止找不到解决方案......

如何将货币列表从 openexchangerates.org 反序列化为 C# 自定义类或对象

使用 Json.Net

var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonString);

--编辑--

你可以让它更短

WebClient w = new WebClient();
string url = "http://openexchangerates.org/currencies.json";
var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(w.DownloadString(url));

使用 .Net 4.0 而不使用第三方库的解决方案:

string url = "http://openexchangerates.org/currencies.json";
var client = new System.Net.WebClient();
string curStr = client.DownloadString(url);
var js = new System.Web.Script.Serialization.JavaScriptSerializer();
var res = (js.DeserializeObject(curStr) as Dictionary<string, object>)
    .Select(x => new { CurKey = x.Key, Currency = x.Value.ToString() });

输出匿名对象列表,并将列表中的键和值作为属性。

享受:)