问题标签 [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 回答
3148 浏览

c# - 如何在 YamlDotNet 中的 YamlMember 上指定别名?

我需要将以下 YAML 反序列化为我的自定义类型。YamlAlias 属性似乎已经过时,所以我将其替换为 YamlMember。它在反序列化以下 YAML 时失败,但有以下例外:

YamlDotNet.Core.YamlException : (Line: 21, Col: 13, Idx: 524) - (Line: 21, Col: 13, Idx: 524): 反序列化期间出现异常----> System.Runtime.Serialization.SerializationException :在类型“Toscana.Domain.HostProperties”上找不到属性“mem_size”。

0 投票
0 回答
886 浏览

c# - 使用 Yaml.net for Unity 从 YAML 到 C#

我目前正在制作一个游戏,其中在 YAML 文件中有一个充满字符串和不同翻译的文件。

这是它的外观示例。

如您所见,我有 3 个嵌套字典。第一个显示语言 - enescn或任何国家前缀。接下来,我有一个带有字符名称的字典列表。这些可以是从player到 的任何东西bob。最后,每个字符都有一个行字典列表。

我正在使用 YAML.net(Unity 的一个版本 - 但使用它似乎与正常情况没有什么不同)。

这是我的对象如何布局的示例。

但是,这不起作用,因为编译器抱怨这en不是es我的Translation类的属性。如何在不指定每个国家代码或字符名称的情况下解决此问题?

0 投票
1 回答
774 浏览

c# - 自定义 Dictionary 到 Yaml 的序列化

我正在寻找一种自定义 YamlDotNet 序列化程序输出的干净方法。

我有以下 POCO:

如果我像这样设置值

并将其序列化,然后我将得到结果:

但是,我需要得到的是

我无法将 key1、key2 等添加为 MyClass 的属性,因为它们在运行时之前是未知的(值和键的数量)。有没有办法可以使用 YamlDotNet 做到这一点?

我考虑过使用反射将 MyClass 中的所有内容转换为 aDictionary<string, object>但更喜欢更简洁的实现。

有什么方法可以控制这种程度的序列化?

0 投票
1 回答
1351 浏览

c# - 如何使用接口序列化/反序列化列表

我正在尝试使用接口序列化和反序列化列表,问题是 yamldotnet 无法反序列化它。

我用一个例子向你展示了它:

当我现在尝试序列化这个时:

结果是

我知道,因为这一点 yamldotnet 无法知道是哪些类型,并且需要在内部定义类类型yml

那么我该如何存档呢?

我已经尝试在文档中找到一些东西,但只有示例,没有接口/列表。

0 投票
1 回答
2487 浏览

c# - 尝试使用 yamldotnet 将 YAML 文件转换为哈希表

现在我正在尝试使用 YamlDotNet 库中提供的反序列化器将 YAML 文件转换为哈希表。得到错误Excpected 'SequenceStart' got 'MappingStart'

YAML 文件结构看起来像

有时包含多个部分。

我也尝试过类似于此Seeking guide reading .yaml files with C#的解决方案,但是会发生相同的错误。如何正确读取 YAML 文件,并使用 YamlDotNet 将其转换为哈希?

0 投票
1 回答
1353 浏览

yamldotnet - YamlDotNet SerializationOptions.EmitDefaults 行为

我正在使用 YamlDotNet 序列化具有引用和值类型的对象。我想要完成的是我的零整数值保留在输出的 yaml 中,但空值将被丢弃。EmitDefaults 看起来会丢弃数字值的“0”。我理解 null 是引用类型的默认值。Json.Net 通过将其分解为以下属性解决了这个问题:

NullValueHandling = NullValueHandling.Ignore,

DefaultValueHandling = DefaultValueHandling.Ignore,

有什么办法可以完成以下任务吗?

谢谢

0 投票
0 回答
634 浏览

.net - YamlDotnet 确实设置了正确的引用

我有一个看起来像这样的类:

如果我序列化它:

输出是:

创建了一个引用*o0,它是另一个类的 ID,它是它的父类。但是 YamlDotnet 没有定义这个引用,因此在反序列化时我得到一个错误,说它缺少一个锚。

这是框架中的错误还是我能做些什么?

0 投票
1 回答
297 浏览

c# - YamlDotNet Serializer 构造函数抛出异常

我必须遵循 YamlDotNet 文档中的代码https://dotnetfiddle.net/QlqGDV

但是新的序列化器抛出了这个异常,我不知道为什么。我没有找到有关该异常消息的任何提示。

0 投票
1 回答
427 浏览

yamldotnet - YamlDotNet 指定主要父级进行序列化?

我有一个 Planet 类,其中包含一个瓷砖列表。每个图块还具有相邻图块的列表。以某种方式,所有瓷砖都连接(间接)。现在我正在尝试使用 YamlDotNet 对其进行序列化。然而,发生的事情是我得到了一个非常丑陋的嵌套序列化。

一个最小的工作示例:(https://dotnetfiddle.net/sWGKMB

这将其作为 yaml 文档给出:

如您所见,由于所有瓷砖都以某种方式连接(在我的迷你示例中直接),因此行星列表中的第一个瓷砖将为所有瓷砖创建一个巨大的嵌套结构。

是否可以强制 YamlDotNet 使用“邻居”列表中的引用以及图块列表中的实际类?所以它看起来像这样:

谢谢!

0 投票
0 回答
711 浏览

c# - YamlDotNet:根据继承深度对序列化属性进行排序

在一个工具项目中,我为 Unity3D 资产生成元文件。由于所有统一资产元都从相同的属性开始,我创建了一个基本类型:

public class MetaBase { public int fileFormatVersion { get; set; } public Guid guid { get; set; } public long timeCreated { get; set; } public string licenseType { get; set; } }

序列化从MetaBase继承的类型的实例会生成 unity 接受的文件,但 fileFormatVersion、guid、timeCreated 和 licenseType 写在文件的底部,而 Unity 将它们写在顶部。正如我所说,它可以工作,但是每当 Unity 决定覆盖元文件时,它都会产生一些需要在我的项目存储库中提交的差异,如果可能的话,我宁愿避免这种情况。

所以,我的第一个想法(升级到 YamlDotNet 4.0.0 之后)是添加一个TypeInspectorSkeleton,它会根据属性的声明类型对 _IPropertyDescriptor_s 进行排序。但是IPropertyDescriptor不提供对实际Property的访问,也不提供对其baseDescriptor属性的访问(对于PropertyDescriptor / OverridePropertyDescriptor)。

不应该有某种方法来访问 Property owner 类型吗?或者也许有更好的方法来实现我想要做的事情?