gpt4 book ai didi

c# - 无法将类型 'Newtonsoft.Json.Linq.JProperty' 转换为 'Newtonsoft.Json.Linq.JObject'

转载 作者:太空狗 更新时间:2023-10-30 00:38:55 25 4
gpt4 key购买 nike

目前正在尝试使用 fixer.io API 在 C# 中创建货币转换。

我在从 Twitter API 解析 JSON 时使用了与下面类似的方法,并且没有任何问题,我不完全确定这里发生了什么。

API 返回的 JSON 示例:

 {
"base": "EUR",
"date": "2016-05-05",
"rates": {
"AUD": 1.5266,
"BGN": 1.9558,
"BRL": 4.0282,
"CAD": 1.4665,
"CHF": 1.1018,
"CNY": 7.441,
"CZK": 27.028,
"DKK": 7.4401,
"GBP": 0.7886,
"HKD": 8.8775,
"HRK": 7.515,
"HUF": 312.84,
"IDR": 15260.95,
"ILS": 4.3221,
"INR": 76.0745,
"JPY": 122.51,
"KRW": 1333.95,
"MXN": 20.2155,
"MYR": 4.5819,
"NOK": 9.2985,
"NZD": 1.6577,
"PHP": 54.171,
"PLN": 4.4234,
"RON": 4.5035,
"RUB": 75.0559,
"SEK": 9.2575,
"SGD": 1.5531,
"THB": 40.191,
"TRY": 3.3166,
"USD": 1.1439,
"ZAR": 17.0751
}
}

这是我目前正在使用的代码:

        List<string> exchangeRate = new List<string>();
string BSE = "USD";
string URL = "http://api.fixer.io/latest?base=" + BSE;

using (var webClient = new System.Net.WebClient())
{
var json = webClient.DownloadString(URL);
dynamic stuff = JsonConvert.DeserializeObject(json);

foreach (JObject item in stuff)
{
exchangeRate.Add(item["rates"].ToString());

foreach (var rates in exchangeRate)
{
Console.WriteLine(rates);
}
}
}

现在我收到的错误是:

Cannot convert type 'Newtonsoft.Json.Linq.JProperty' to 'Newtonsoft.Json.Linq.JObject'

这发生在“JObject 项目”

最佳答案

在您的代码中,JsonConvert.DeserializeObject()JObject 返回到动态变量 stuff 中。当您使用 foreach 迭代 JObject 时,被枚举的项目始终是 JProperty 实例,而不是 JObject 实例.由于 JProperty 不是 JObject 的子类,您不能将它分配给 JObject 变量,这就是您收到此错误的原因。

如果您只是想将所有货币汇率打印到控制台,您可以这样做:

JObject stuff = JObject.Parse(json);

foreach (JProperty rate in stuff["rates"])
{
Console.WriteLine(rate.Name + ": " + rate.Value);
}

fiddle :https://dotnetfiddle.net/fpS9CM

关于c# - 无法将类型 'Newtonsoft.Json.Linq.JProperty' 转换为 'Newtonsoft.Json.Linq.JObject',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37058137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com