2

我需要从这里获取 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 来做到这一点,但到目前为止找不到解决方案......

4

2 回答 2

5

使用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));
于 2012-05-09T20:39:30.400 回答
2

仅使用 .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() });

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

享受 :)

于 2012-05-09T23:03:43.080 回答