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 に答える