【问题标题】:How I should deserialized this object correctly?我应该如何正确反序列化这个对象?
【发布时间】:2019-11-22 09:12:09
【问题描述】:

我使用的 API 返回具有某些属性的公司符号集合,但我不知道应该如何反序列化它

{
    "A": {
        "advanced-stats": {
            "prop1": 0.198791,
            "prop2": 16.59,
            "prop3": 12.44,
        }
    },
    "AA": {
        "advanced-stats": {
            "prop1": 0.198791,
            "prop2": 16.59,
            "prop3": 12.44,
        }
    },
    "AAAU": {
        "advanced-stats": {
            "prop1": 0.198791,
            "prop2": 16.59,
            "prop3": 12.44,        
        }
    }
}

【问题讨论】:

  • 这可能会帮助您获得一个起点:json2csharp.com
  • 我已经在其他网站上尝试过这种方法,但没有任何匹配
  • @Stefan 您可能不想使用外部 Web 应用程序,因为您可能会将敏感数据存储在其他地方。您应该避免使用这些,并且 OP 在查看标签时要求特定的 C# 解决方案。
  • @Barrosy:好吧,我的意思是开始使用 C# 建模...无论如何,OP 似乎已经尝试过了。
  • 包含“某些对类型”的列表/数组类型的属性(高级统计)的对象的字典(键 = A、AA 等)将是一个开始......并在任何本地模型中进行转换是合适的。

标签: c# json asp.net-core json-deserialization


【解决方案1】:

您可以使用以下类对 JSON 进行建模:

public class AdvancedStats
{
    public double Prop1 { get; set; }
    public double Prop2 { get; set; }
    public double Prop3 { get; set; }
}

public class AdvancedRoot
{
    [JsonProperty("advanced-stats")]
    public AdvancedStats AdvancedStats { get; set; }
}

由于 JSON 键具有不同的名称,您可以将其建模为 Dictionary<string, AdvancedRoot>。然后反序列化(使用 Newtonsoft.Json):

var results = JsonConvert.DeserializeObject<Dictionary<string, AdvancedRoot>>(json);

Try it online

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多