我试图从源代码反序列化YAML文件,而我无法控制某些文件的数字键位置。
示例:
0:
name: Category1
published: true
1:
name: Category2
published: false
就我的目的而言,数字键对于存储很重要,因为其他数据集将如何引用数据。
示例:
3573:
name: Item1
category: 0
89475:
name: Item2
category: 1
有没有办法从YAMLDotNet的解串器访问该密钥来为该类提供信息?
答案 0 :(得分:1)
我闻到了网上的气味...... 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();
}
}