解析 C# 字典中的嵌套值

时间:2021-04-13 20:24:31

标签: c# .net dictionary

我的 C# 应用程序具有以下 json,该 json 反序列化为分配给 values 的字典:

{
  "armSpan": 1.8081974983215332,
  "handPosition": {
    "x": 1.23,
    "y": 1.74,
    "z": 2.05,
  }
}

这是反序列化的代码:

var values = JsonConvert.DeserializeObject<Dictionary<string, string>>(response);

我想将其中的数据分配给我的 Size 模型中的各个字段。对于 armSpan,我很高兴以下方法有效:

size.ArmSpan = decimal.Parse(values["armSpan"]);

我不知道如何获得 x、y 和 z 的值。应该是这样的

size.HandPosX = decimal.Parse(values["handPosition"]["x"]);

size.HandPosX = decimal.Parse(values["handPosition"].["x"]);

1 个答案:

答案 0 :(得分:2)

有在线转换器可以根据您的 json 生成 c# 代码(搜索“JSON to C#”)。使用其中之一,我根据您提供的 json 创建了这些类(删除了 '"z": 2.05,' 中的多余逗号):

public partial class ClassYouDeserializeTo
{
    [JsonProperty("armSpan")]
    public double ArmSpan { get; set; }

    [JsonProperty("handPosition")]
    public HandPosition HandPosition { get; set; }
}

public partial class HandPosition
{
    [JsonProperty("x")]
    public double X { get; set; }

    [JsonProperty("y")]
    public double Y { get; set; }

    [JsonProperty("z")]
    public double Z { get; set; }
}

您可以像这样使用它们:

var values = JsonConvert.DeserializeObject<ClassYouDeserializeTo>(response);