- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
目前正在尝试使用 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/
我有一个像这样的 json 结构: var json = { "report": {}, "expense": {}, "invoices": {}, "projects": {},
实际上,我正在处理从 Framework 3.5 中的旧 VB.NET 项目中的某个 API 获取的一些 JSON 数据 我被困在以下响应的处理中: { "data": { "89359"
我使用 json.net 比较流利,但我正在努力以一种直接的方式提取这个值。 我觉得 json.net 应该能够推断出我正在尝试做什么,这样我就不必为了获得我想要的东西而在整个过程中进行每一步。 下面
我有下面的 Java 代码,其中 Array 是一个自定义对象。 public native int pax_store_get_data_avail_info(DataAvailable[] sta
我尝试查找上述比较,但找不到答案。 因为有多种方法可以获取 JObject(或所有继承自 JToken 的子类型)例如: Method1 . JObject.FromObject(obj); Meth
我有一个变量 projectData,它包含存储在数据库中的有效 json 字符串。 完成以下操作后: JObject obj = new JObject(); obj = JObject.Parse
我有 2 个情景来说明这个问题。 场景一 using System; using Newtonsoft.Json.Linq; public class Program { public sta
我有一个像这样的 JObject: JObject grid = new JObject( new JProperty("myprop", "value
当我尝试解析一个大约有 200mb 的大型 json 文件时遇到问题。我正在用 Newtonsoft.Json 来做这件事。它给出了 OutOfMemory 异常。 这是我的代码: using (St
我正在尝试创建 JObject 的扩展类,它是不可变的。 如果我创建一个如下所示的类,它可以防止实际的 JObject 被修改吗? public class ImmutableJObejct: JOb
我试过了 JObject obj = new JObject(); obj["item1"] = new string[] {"a","b"}; 得到了 Cannot implicitly conv
我有一个 json 字符串,需要转换为 JObject。 例子: String result = ""{"totalSize":1,"done":true,"records":[{"attribute
这个问题在这里已经有了答案: Merge two Json.NET arrays by concatenating contained elements (3 个答案) 关闭 6 年前。 我有第一个
我正在尝试使用 JObject 创建一个像这样的 json 对象: { "input": { "webpage/url": "http://google.com/" }
我有一个使用 LINQ to JSON 构建的 JObject(我正在使用 Json.Net)(也由同一个库提供)。当我在 JObject 上调用 ToString() 方法时,它会将结果输出为格式化
我有一个包含以下内容的 XYZ.Json 文件。 { "ABC": "Account", "CDE": "Balance", "EFG": "Enquiry" } 我尝试使用以下代码从这个
我正在为 Cosmos DB(基于文档或 JSON 的 DB)创建数据库播种器。一些 C# 模型的属性 Config 是 JSON,所以我一直在使用这种类型的代码来设置该属性: Config = JO
概括: 借助美国教育部 API,我计划为计算机科学专业的毕业生创建一个大学列表和工资中位数。但是,许多学校都有空值,并且尝试删除空值会破坏代码,因为您无法在枚举时修改集合。 我的 denullifie
我有一个 JObject 项目,如下所示: { "part": { "values": ["engine","body","door"]
我有以下代码: JToken hours = jToken["hours"]; 它返回以下 JSON: { "monday": [ ["11:00", "21:30"]
我是一名优秀的程序员,十分优秀!