繁体   English   中英

如何在C#(asp.net)中反序列化此JSON数据

[英]How to Deserialize this JSON data in C# (asp.net)

如何在asp.net C#中反序列化此Json数据。

{"USD_PHP":{"2016-12-31":49.560001},"PHP_USD":{"2016-12-31":0.020178}}

这里USD_PHPPHP_USD将始终是唯一的,日期2016-12-31对于每个日期值也都是唯一的。 我所有想要在我的应用程序中获得货币兑换率(49.560001和0.020178)的货币。 我该如何构建没有通用密钥字段的程序?

资源

var req = new RestRequest("api url"); // RestSharp.dll
var client = new RestClient("host url");
var response = client.ExecuteTaskAsync(req).Result.Content;
var json =((dynamic)JsonConvert.DeserializeObject(response))
 //Newtonsoft.Json.dll
var dic = new Dictionary<string, List<Tuple<string, string>>>();
foreach (var item in json)
{
  var items = new List<Tuple<string, string>>();
  foreach (var value in item.Value)
  {
       var newItem = new Tuple<string, string>(value.Name, value.Value.ToString());
       items.Add(newItem);
  }
  if (items.Any())
  {
       dic.Add(item.Name, items);
  }
}

我希望这个例子对您有帮助。

反序列化为Dictionary<string, Dictionary<string, decimal>> 外键将是货币转换名称,内键将是日期,而内键的值将是转换率。 这将与JavaScriptSerializerJson.Net一起使用

string json = @"{""USD_PHP"":{""2016-12-31"":49.560001},""PHP_USD"":{""2016-12-31"":0.020178}}";

var jss = new JavaScriptSerializer();

var outer = jss.Deserialize<Dictionary<string, Dictionary<string, decimal>>>(json);

foreach (var kvp in outer)
{
    foreach (var kvp2 in kvp.Value)
    {
        Console.WriteLine(kvp.Key + "  " + kvp2.Key + "  " + kvp2.Value);
    }
}

输出:

USD_PHP  2016-12-31  49.560001
PHP_USD  2016-12-31  0.020178

小提琴(Json.Net): https ://dotnetfiddle.net/L7cvMY

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM