问题标签 [yamldotnet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1878 浏览

.net - YamlDotNet - 需要反序列化器来忽略额外的节点或对丢失的节点没问题

我正在尝试使用 YamlDotNet 来帮助我解析配置文件。我研究了它的文档,发现了两种方法:

  1. 使用 YamlStream 的 Load() 方法,然后检查它创建的 YamlDocument 的节点;
  2. 为结果存储编写一系列相关类,然后使用 Deserializer 的 Deserialize() 方法自动实例化并用数据填充对象。

第一种方法不是特别优雅(代码很乱)。但它允许我在输入文件中有额外的“标签:值”对。任何额外的东西都会被忽略。我还可以在我的代码中使用逻辑来检测是否缺少任何“标签”并跳过尝试读取其值。

第二种方式很优雅,代码也很干净。但是,它会阻塞额外的“标签:值”对。此外,如果输入文件中缺少任何预期的“标签:值”对,它也会引发异常。

我正在寻找一种使用第二种方法(调用 Deserialize 方法)的方法,但即使输入文件中有额外数据或缺少某些内容,也允许它工作。

我没有找到我希望可以应用于我的对象模型成员的“可选”属性。

如果使用反序列化方法时可能有可选节点或额外未使用的节点,有人可以教育我吗?

0 投票
0 回答
183 浏览

deserialization - 使用 YamlDotNet 反序列化 MkDocs.yml 页面对象

我正在开发一个将多个文档源转换为 MkDocs 项目的项目。MkDocs 项目文件 MkDocs.yml 是一个 YAML 文档。我需要反序列化现有页面,以便可以通过 C# 控制台应用程序在该项目中插入新的 .md 页面和标题。

示例 MkDocs.yml 文件

我使用 YamlDotNet 提供的 DeserializeObjectGraph 单元测试来测试页面反序列化。测试总是失败,但出现以下异常:

执行附加单元测试时产生异常

我猜我需要在 Page 类或其属性之一上放置某种类型的属性。有没有人有反序列化类似这样的结构的经验?如果是这样,你可以发布一个样本给我一些参考吗?

这是我使用的输入 DeserializeObjectGraph.cs:

0 投票
0 回答
225 浏览

yamldotnet - YamlDotNet - 如何反序列化多个不同的文档?

在网上搜索了一个解决方案,但没有得到它。有没有人帮忙!

我想反序列化以下 YAML 文档。问题是每个文档的结构不同。到底有没有?

0 投票
1 回答
366 浏览

c# - 反序列化 YAML 文件 - 基于 Eve Online

大约一个星期以来,我一直在断断续续地挣扎。

我正在创建一个可以采用 .yaml 并将其解析为对象以进行操作和输出的程序。我遇到的问题是 YAMLDotNet 包的错误,当它到达反序列化指令时,它会引发如下异常:

YamlDotNet.dll 中出现“YamlDotNet.Core.YamlException”类型的未处理异常

附加信息:(Line: 5, Col: 13, Idx: 54) - (Line: 5, Col: 22, Idx: 63): 反序列化期间的异常

我意识到它与字符“'”相关联,我认为这是不分配类型的问题。我环顾四周并尝试了一些解决方案,正如您将看到的一些注释代码但没有运气。有人可以指出我正确的方向吗?我也非常感谢任何有关 YAML 序列化和反序列化的相关阅读材料。

免责声明:我是一个受过半教育的非出版编码员,只是为了我自己的享受/目的而编码。这是我第一次尝试在编码问题上获得公共帮助,所以如果我没有提供足够的信息或不正确的信息,请告诉我,以便我进行更正。

这是 YAML 的示例:

这是我的对象类:

这是我的指令代码:

0 投票
1 回答
562 浏览

c# - 有没有办法反序列化 YAML 文档的特定属性?

在 JSON.Net 中,我可以将 JSON 文件读入数据结构,然后仅将我感兴趣的属性转换为对象。例如,如果我有一个 JSON 文件,例如

我可以像这样得到对象:

如何使用 YAMLDotNet 或 SharpYaml 做同样的事情?即,如果我有一个 YAML 文件,例如

如何SteveObject从中重建而无需创建外部对象?

0 投票
0 回答
1257 浏览

c# - 在 C# 中反序列化 yaml

我有一系列结构较差的 yaml 文件,需要在 C# 中进行解析。架构类似于:

的子级Root可以是零个或多个已知值,KnownTypeA..Z。接下来的 2 级后代是任意值,VariableNameLevel3A..Z并且VariableNameLevel4A..Z. 键/值集合的最后一级映射到二级父级描述的模型,KnownTypeA..Z. 属性集合不包括在内,通常会漏掉一个或多个。

最后,第一级可能在已知Root的感兴趣节点下有其他键/值集合。

我查看了 c# yaml 实现,似乎 yamldotnet 是维护最多的,但它缺乏文档。手动解析这个烂摊子是唯一的选择,还是有人知道一种实现可能会对反序列化器可以将最合适的模型应用于VariableNameLevel4x集合的模型的方法产生一些见解?

0 投票
0 回答
138 浏览

yamldotnet - 反序列化自定义类型

下面的 xaml 粗略地描述了许多可以重新排列成许多不同配置和嵌套级别的步骤。

有许多 *resolver 和 *converters,但是关于何时使用哪个的好建议会非常有帮助。如何注册自定义类型工厂以及在哪些地方?

0 投票
2 回答
1482 浏览

yamldotnet - 在 YamlDotNet 中:有没有办法将空值输出为序列中的空字符串?

在 IYamlTypeConverter 中编写序列时,您可能会使用如下代码:

通过调用emitter.Emit(new Scalar("null")),您将在序列中获得一个“空”条目,但如果您将序列化留给 YamlDotNet,它将被序列化为“”(空字符串)。

编写自定义 IYamlTypeConverter 时如何将序列中的空值输出为空字符串?

0 投票
1 回答
1194 浏览

c# - 反序列化 yaml 文件时出错

序列化没有问题,但反序列化抛出错误,如下所示。我分享了所有相关的类和错误。我应该怎么做才能反序列化这个文件。

yaml 文件(由 yaml 序列化创建):

c# 类:

收到此错误:(Line: 7, Col: 9, Idx: 86) - (Line: 7, Col: 9, Idx: 86): 反序列化期间出现异常

“YamlDotNet”

内部异常:

无法创建“YamlEdit.Operation”类型的实例。

在 YamlDotNet.Serialization.ObjectFactories.DefaultObjectFactory.Create(Type type) 在 YamlDotNet.Serialization.NodeDeserializers.ObjectNodeDeserializer.YamlDotNet.Serialization.INodeDeserializer.Deserialize(IParser parser, Type expectedType, Func`3 nestedObjectDeserializer, Object& value) 在 YamlDotNet.Serialization。 ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser 解析器,Type expectedType,SerializerState 状态,IValueDeserializer nestedObjectDeserializer)

堆栈跟踪 :

0 投票
0 回答
970 浏览

c# - 在 YamlDotNet 中,如何反序列化仅获取器的属性?

我想序列化/反序列化具有只读私有字段和公共 getter-only 属性的对象,其只读字段在对象的构造函数中设置。但是,以下代码在单元测试中失败:

这失败并显示“测试失败”消息

并显示堆栈跟踪

简单地序列化 CPU 对象的 CPU 实例会生成如下所示的 YAML:"CPUMaker: Intel\r\n"

似乎有一个类似的 SO 问题(YamlDotNet 找不到属性),于 2016 年 12 月 23 日(13 个月前)提出,但没有人回答或评论。

摘要:使用 YamlDotNet,序列化/反序列化具有只读字段支持的仅 getter 属性的对象的正确方法是什么?

TIA 寻求帮助!