gpt4 book ai didi

c# - 如何在将 JSON 反序列化为 C# .Net 后访问嵌套类中的字段

转载 作者:太空宇宙 更新时间:2023-11-03 21:16:46 28 4
gpt4 key购买 nike

我已成功使用 JSON.NET 反序列化 AWS pricing data .

以下是使用 json2csharp.net 从 JSON 生成的类:

public class Prices
{
public string USD { get; set; }
}

public class ValueColumn
{
public string name { get; set; }
public Prices prices { get; set; }
}

public class Size
{
public string size { get; set; }
public List<ValueColumn> valueColumns { get; set; }
}

public class InstanceType
{
public string type { get; set; }
public List<Size> sizes { get; set; }
}

public class Region
{
public string region { get; set; }
public List<InstanceType> instanceTypes { get; set; }
}

public class Config
{
public string rate { get; set; }
public List<string> valueColumns { get; set; }
public List<string> currencies { get; set; }
public List<Region> regions { get; set; }
}

public class RootObject
{
public double vers { get; set; }
public Config config { get; set; }
}

当以 RootObject(代表反序列化 JSON 对象的根)开始时,我不确定如何能够访问 Prices 类中的数据字段。假设我的 RootObject 被命名为“root”,我可以获得:

Console.WriteLine(root.config.regions.count);

但我不知道如何递归访问区域列表中的实际项目,然后是 instanceTypes 列表等,直到我一路访问价格类。

换句话说,我需要帮助从根级别一直到叶级别递归反序列化的 JSON 对象,以便我可以访问那里(以及两者之间的任何位置)的数据字段。我希望我已经清楚了,因为这是我第一次使用 JSON/反序列化/C#。

感谢您的宝贵时间!

最佳答案

这是您可能想要做的:

var rootObject = JsonConvert.DeserializeObject<RootObject>(awsJsonData);
foreach(var region in rootObject.config)
{
//Work with regions here
foreach(var instanceType in region.instanceTypes)
{
//work with this regions instance types here
foreach(var size in instanceType.sizes)
{
//work with this instance types sizes here
(etc...)
}
}
}

一旦您一直了解 valuecolumn.prices 中的 foreach 价格,您就可以随心所欲地组合数据,因为父对象在 foreach 范围内可用。

关于c# - 如何在将 JSON 反序列化为 C# .Net 后访问嵌套类中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33652033/

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