【问题标题】:How to fetch keys from JSON in C#如何在 C# 中从 JSON 中获取密钥
【发布时间】:2016-07-12 05:34:10
【问题描述】:

JSON:

{"From":
{"CHF":{"Rate":0.91640105,"AsAtDate":"2016-04-19T00:00:00"},
"DKK":{"Rate":0.13437824,"AsAtDate":"2016-04-19T00:00:00"},
"EUR":{"Rate":1.0,"AsAtDate":"2016-04-19T00:00:00"},
"GBP":{"Rate":1.25985769,"AsAtDate":"2016-04-19T00:00:00"},
"PLN":{"Rate":0.23213581,"AsAtDate":"2016-04-19T00:00:00"},
"RON":{"Rate":0.22338218,"AsAtDate":"2016-04-19T00:00:00"},
"SEK":{"Rate":0.10868521,"AsAtDate":"2016-04-19T00:00:00"}},
"To":"EUR","RequestedDate":"2016-07-08T00:00:00"}

我想从以下获取键列表。 例如。列表应返回所有值,如 DKK、EUR、GBP。 反序列化 JSON 需要 C# 代码。

我能够从 JSON 中获取值,但不能从键中获取。

【问题讨论】:

  • 请显示您获取值的代码,以便能够看到您正在使用哪个库(如果有),并可以通过这种方式提供适当的示例
  • JToken token = JObject.Parse(response.Content); ActualCurrencies.Swiss_Franc = (string)token.SelectToken("From.CHF.AsAtDate1");
  • 需要在字典或字符串数​​组列表中获取一些东西来获取键值

标签: c# json api


【解决方案1】:

你可以创建类来匹配你的json格式,然后读取key:

public class CurrecyConversion
{
    public Dictionary<string, CurrencyRate> From { set; get; }
    public string To { set; get; }
    public DateTime RequestedDate { set; get; }
}

public class CurrencyRate
{
    public decimal Rate { set; get; }
    public DateTime AsAtDate { set; get; }
}

你需要下载这个Nuget Package(右键Project>Manager Nuget Packages)

用法:

CurrecyConversion result = Newtonsoft.Json.JsonConvert.
                                        DeserializeObject<CurrecyConversion>(jsonText);

List<string> keys = result.From.Keys.ToList();
foreach (var key in keys)
    Console.WriteLine(key);

结果:

CHF
DKK
EUR
GBP
PLN
RON
SEK

【讨论】:

  • 我使用 IRestResponse 代替 jsonText
  • @jayeshmhatre 只需从响应中获取 josn 字符串并继续执行上述逻辑。
  • @jayeshmhatre string jsonText = response.Content;
  • 错误 15 'System.Collections.Generic.Dictionary.KeyCollection' 不包含 'ToList' 的定义并且没有扩展方法 'ToList' 接受可以找到“System.Collections.Generic.Dictionary.KeyCollection”类型的第一个参数(您是否缺少 using 指令或程序集引用?) C:\Users\mhatrejv\Desktop \CoreAnalytics.TestFramework 示例项目\CoreAnalytics.TestFramework\EMLAPIData.cs 370 50 CoreAnalytics.TestFramework.WebAPI
  • @jayeshmhatre 在文件顶部添加using System.Linq;
猜你喜欢
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-19
  • 2018-03-10
相关资源
最近更新 更多