1

我正在尝试从我无法控制某些文件在何处具有数字键的源中反序列化 YAML 文件。

例子:

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

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

例子:

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

有什么方法可以从 YAMLDotNet 的 Deserializer 访问密钥来提供课程?

4

1 回答 1

2

我在网上闻到了前夜的味道...... o7......我也去过那里并做到了,所以这是你的答案。将文档根节点用作 (YamlMappingNode) 并迭代子节点(键值对)。条目键将是 categoryID,条目值将是类别数据。

        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();
            }
        }
于 2016-12-04T22:13:32.493 回答