max*_*max 5 c# yaml yamldotnet
我想在c#中解析yaml,以便得到一个Hashtables列表.我正在使用YamlDotNet.这是我的代码:
TextReader tr = new StringReader(txtRawData.Text);
var reader = new EventReader(new MergingParser(new Parser(tr)));
Deserializer des = new Deserializer(); ;
var result = des.Deserialize<List<Hashtable>>(tr);
Run Code Online (Sandbox Code Playgroud)
它不会失败,但会给我一个空对象.
我的yaml就像:
- Label: entry
Layer: x
id: B35E246039E1CB70
- Ref: B35E246039E1CB70
Label: Info
Layer: x
id: CE0BEFC7022283A6
- Ref: CE0BEFC7022283A6
Label: entry
Layer: HttpWebRequest
id: 6DAA24FF5B777506
Run Code Online (Sandbox Code Playgroud)
如何解析我的yaml并将其转换为所需的类型而不必自己实现?
您问题中的YAML文档格式错误.每个键必须与前一个键具有相同的缩进.由于您提到代码没有失败,我将假设您正在解析的实际文档已正确格式化.
我能够使用以下代码成功解析文档:
var deserializer = new Deserializer();
var result = deserializer.Deserialize<List<Hashtable>>(new StringReader(yaml));
foreach (var item in result)
{
Console.WriteLine("Item:");
foreach (DictionaryEntry entry in item)
{
Console.WriteLine("- {0} = {1}", entry.Key, entry.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
这个小提琴表明代码有效.我已从代码中删除了第二行,因为它创建了一个从未使用过的对象.
此外,Hashtable可能不是你想要使用的.由于在.NET中引入了泛型,因此使用a更好Dictionary.它具有类型安全的好处.在这种情况下,您可以使用Dictionary<string, string>.
| 归档时间: |
|
| 查看次数: |
10251 次 |
| 最近记录: |