从 YamlDotNet 解串器访问密钥

Accessing key from YamlDotNet deserializer

我正在尝试从我无法控制的来源反序列化 YAML 文件,其中一些文件有数字键。

示例:

0:
    name: Category1
    published: true
1:
    name: Category2
    published: false

为了我的目的,存储数字键很重要,因为这是其他数据集引用数据的方式。

示例:

3573:
    name: Item1
    category: 0
89475:
    name: Item2
    category: 1

有没有办法从 YAMLDotNet 的反序列化器访问密钥以提供 class?

我在网上闻到 eve...o7...我也去过那里,所以这就是您的答案。使用文档根节点作为 (YamlMappingNode) 并迭代子节点(键值对)。输入键将是类别 ID,输入值将是类别数据。

        YamlMappingNode mapping = (YamlMappingNode)yaml.Documents[0].RootNode;
        foreach (var entry in mapping.Children)
        {
            int categoryID = Int32.Parse(entry.Key.ToString());
            YamlMappingNode params = (YamlMappingNode)entry.Value;
            foreach (var param in params.Children)
            {
                string paramName = param.Key.ToString();
                // Assign value to parameter.
                if(paramName == "name")
                    name = param.Value.ToString();
            }
        }