如何使用 YamlDotNet 仅解析部分 YAML?
How do I parse only part of YAML using YamlDotNet?
假设我有以下 YAML:
config_one:
name: foo
stuff: value
config_two:
name: bar
random: value
我想有选择地将 config_one
解析为一个对象,我希望 config_two
被忽略:
class ConfigOne
{
public string Name {get;set;}
public string Stuff {get;set;}
}
我该怎么做?该文档非常缺乏,或者至少,它使用了很多对我来说意义不大的术语,因此我无法搜索此功能。
构建反序列化器时,添加 IgnoreUnmatchedProperties()
:
var deserializer = new DeserializerBuilder()
.WithNamingConvention(UnderscoredNamingConvention.Instance)
.IgnoreUnmatchedProperties()
.Build();
这“指示反序列化器忽略不匹配的属性而不是抛出异常。”
Git Source
使用 Cinchoo ETL - 一个开源库,您可以使用带有 reader 对象的 YamlPath 加载选择性节点。
这是工作示例
string yaml = @"
config_one:
name: foo
stuff: value
config_two:
name: bar
random: value
";
using (var r = ChoYamlReader<ConfigOne>.LoadText(yaml)
.WithYamlPath("config_one")
)
{
foreach (var rec in r)
Console.WriteLine(rec.Dump());
}
或一个班轮代码
Console.WriteLine(ChoYamlReader.DeserializeText<ConfigOne>(yaml, "config_one").FirstOrDefault().Dump());
输出:
-- ChoYamlReaderTest.Program+ConfigOne State --
Name: foo
Stuff: value
示例 fiddle:https://dotnetfiddle.net/oMzL3R
免责声明:我是该库的作者。
假设我有以下 YAML:
config_one:
name: foo
stuff: value
config_two:
name: bar
random: value
我想有选择地将 config_one
解析为一个对象,我希望 config_two
被忽略:
class ConfigOne
{
public string Name {get;set;}
public string Stuff {get;set;}
}
我该怎么做?该文档非常缺乏,或者至少,它使用了很多对我来说意义不大的术语,因此我无法搜索此功能。
构建反序列化器时,添加 IgnoreUnmatchedProperties()
:
var deserializer = new DeserializerBuilder()
.WithNamingConvention(UnderscoredNamingConvention.Instance)
.IgnoreUnmatchedProperties()
.Build();
这“指示反序列化器忽略不匹配的属性而不是抛出异常。”
Git Source
使用 Cinchoo ETL - 一个开源库,您可以使用带有 reader 对象的 YamlPath 加载选择性节点。
这是工作示例
string yaml = @"
config_one:
name: foo
stuff: value
config_two:
name: bar
random: value
";
using (var r = ChoYamlReader<ConfigOne>.LoadText(yaml)
.WithYamlPath("config_one")
)
{
foreach (var rec in r)
Console.WriteLine(rec.Dump());
}
或一个班轮代码
Console.WriteLine(ChoYamlReader.DeserializeText<ConfigOne>(yaml, "config_one").FirstOrDefault().Dump());
输出:
-- ChoYamlReaderTest.Program+ConfigOne State --
Name: foo
Stuff: value
示例 fiddle:https://dotnetfiddle.net/oMzL3R
免责声明:我是该库的作者。