gpt4 book ai didi

c# - 使用 JSON.NET 将部分 json 反序列化为 C# 中的数据表

转载 作者:行者123 更新时间:2023-11-30 21:33:06 26 4
gpt4 key购买 nike

这可能非常简单,而且我缺乏基本的理解。 我正在调用一个返回 JSON 的 API,如下所示:

{
disclaimer: "https://openexchangerates.org/terms/",
license: "https://openexchangerates.org/license/",
timestamp: 1449877801,
base: "USD",
rates: {
AED: 3.672538,
AFN: 66.809999,
ALL: 125.716501,
AMD: 484.902502,
ANG: 1.788575,
AOA: 135.295998,
ARS: 9.750101,
AUD: 1.390866,
}
}

我想做的就是将结果返回到包含列的数据表中时间戳、基础、货币和汇率其中时间戳和基数来自这些字段,货币和汇率来自嵌套汇率部分

我花了整个早上的时间阅读并尝试了许多不同的方法,老实说,我还没有弄清楚我需要什么。我什至无法读取基础货币,因为显然 stuff.base 是不允许的

var response = httpClient.GetStringAsync(new Uri(url)).Result;

JObject jsonResponse = JObject.Parse(response);
CurrentContext.Message.Display(response);

dynamic stuff = JsonConvert.DeserializeObject(response);

var timestamp = stuff.timestamp;
CurrentContext.Message.Display("TIMESTAMP IS :"+ timestamp);

var basecur = stuff.base;
CurrentContext.Message.Display("TIMESTAMP IS :" + basecur);


DataTable outputData = new DataTable();
outputData.Columns.Add("timestamp", typeof(System.String));
outputData.Columns.Add("basecurrency", typeof(System.String));
outputData.Columns.Add("currency", typeof(System.String));
outputData.Columns.Add("rate", typeof(System.Int16));

感谢 David 的回答,我的代码现在可以运行了:

var response = httpClient.GetStringAsync(new Uri(url)).Result;
var result = JsonConvert.DeserializeObject<Deserialize>(response);

DataTable outputData = new DataTable();
outputData.Columns.Add("timestamp", typeof(System.String));
outputData.Columns.Add("basecurrency", typeof(System.String));
outputData.Columns.Add("currency", typeof(System.String));
outputData.Columns.Add("rate", typeof(System.Decimal));

foreach (KeyValuePair<string, double> entry in result.Rates)
{

outputData.Rows.Add(result.Timestamp,result.Base,entry.Key,entry.Value);
}

return outputData;

最佳答案

您应该反序列化为适当的 C# 类,例如:

public class Foo
{
public string Disclaimer { get; set; }
public string License { get; set; }
public int Timestamp { get; set; }
public string Base { get; set; }
public Dictionary<string, double> Rates { get; set; }
}

现在你可以这样做了:

var result = JsonConvert.DeserializeObject<Foo>(response);

现在使用其中的数据将变得微不足道:

var baseCurrency = result.Base;

关于c# - 使用 JSON.NET 将部分 json 反序列化为 C# 中的数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51743753/

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