在 .NET 中,可以使用 YamlDotNet 类库解析和生成 YAML 文件。

YamlDotNet :https://github.com/aaubry/YamlDotNet

NuGet 下载:https://www.nuget.org/packages/YamlDotNet/

帮助文档:https://github.com/aaubry/YamlDotNet/wiki

序列化一个对象为 YAML 格式

using YamlDotNet.Serialization;using YamlDotNet.Serialization.NamingConventions;...var person = new Person{Name = "Abe Lincoln",Age = 25,HeightInInches = 6f + 4f / 12f,Addresses = new Dictionary<string, Address>{{ "home", new  Address() {Street = "2720  Sundown Lane",City = "Kentucketsville",State = "Calousiyorkida",Zip = "99978",}},{ "work", new  Address() {Street = "1600 Pennsylvania Avenue NW",City = "Washington",State = "District of Columbia",Zip = "20500",}},}};var serializer = new SerializerBuilder().WithNamingConvention(CamelCaseNamingConvention.Instance).Build();var yaml = serializer.Serialize(person);System.Console.WriteLine(yaml);// Output: // name: Abe Lincoln// age: 25// heightInInches: 6.3333334922790527// addresses://   home://     street: 2720  Sundown Lane//     city: Kentucketsville//     state: Calousiyorkida//     zip: 99978//   work://     street: 1600 Pennsylvania Avenue NW//     city: Washington//     state: District of Columbia//     zip: 20500

反序列化 YAML 到对象

using YamlDotNet.Serialization;using YamlDotNet.Serialization.NamingConventions;...
var yml = @"
name: George Washington
age: 89
height_in_inches: 5.75
addresses:home:street: 400 Mockingbird Lanecity: Louarylandstate: Hawidahozip: 99970
"
name: George Washington
age: 89
height_in_inches: 5.75
addresses:home:street: 400 Mockingbird Lanecity: Louarylandstate: Hawidahozip: 99970
";var deserializer = new DeserializerBuilder().WithNamingConvention(UnderscoredNamingConvention.Instance)  // see height_in_inches in sample yml.Build();//yml contains a string containing your YAMLvar p = deserializer.Deserialize<Person>(yml);var h = p.Addresses["home"];System.Console.WriteLine($"{p.Name} is {p.Age} years old and lives at {h.Street} in {h.City}, {h.State}.");// Output:// George Washington is 89 years old and lives at 400 Mockingbird Lane in Louaryland, Hawidaho.

转换 YAML 为 JSON 格式

var r = new StringReader(@"
scalar: a scalar
sequence:- one- two
");var deserializer = new DeserializerBuilder().Build();var yamlObject = deserializer.Deserialize(r);
var serializer = new SerializerBuilder().JsonCompatible().Build();
var json = serializer.Serialize(yamlObject);Console.WriteLine(json);

该代码会产生以下输出:

{"scalar": "a scalar", "sequence": ["one", "two"]}

在 .NET 中使用 C# 处理 YAML相关推荐

  1. OpenCV中XML文件和YAML文件的读写

    OpenCV中XML文件和YAML文件的读写 代码如下: #include <opencv2/core/core.hpp> #include <iostream> #inclu ...

  2. vue中使用CodeMirror解析yaml语言

    vue中使用CodeMirror解析yaml语言 一.CodeMirror插件使用 1.CodeMirror插件安装 二.CodeMirror基本配置 三.CodeMirror具体使用 1.首先创建一 ...

  3. 关于 Kubernetes 中通过 Kustomize 定制 Yaml资源文件的一些笔记

    写在前面 分享一些 Kustomize 的笔记 博文内容涉及: Kustomize 的简单介绍 Kustomize 安装 Kustomize 生成资源yaml 文件 Demo 理解不足小伙伴帮忙指正 ...

  4. 关于Kubernetes 中通过 Kustomize 实现YAML资源文件组合与继承的一些笔记

    写在前面 分享一些通过Kustomize 实现YAML资源文件组合与继承的笔记 官方文档里叫做组织和定制,这里这么叫方便理解 博文内容基本为官网文档内容 理解不足小伙伴帮忙指正 傍晚时分,你坐在屋檐下 ...

  5. OpenCV4中读取摄像头参数YAML文件(C++和C#)

    0:环境 OpenCV4.1.2 + Win10 + Visual Studio2019 我的工程是C#的,需要程序读取摄像头参数yaml中的摄像头参数矩阵.畸变矩阵. 其实这些opencv都已经帮我 ...

  6. yaml文件以及k8s相关yaml字段解析,kubeedge中deviceModel与device.yaml字段解析

    YAML基本语法 使用空格做为缩进 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 一般开头缩进两个空格 字符后面缩进一个空格,比如冒号: ,逗号 等后面 低版本缩进时不允许使用Tab 键,只允 ...

  7. java中snakeyaml工具包操作yaml文件,什么是yaml文件,yaml如何解析转换为实体,实体如何生成yaml文件

    什么是yaml文件 这里就不去搞yaml的书面意思了,其实就可以理解为一种数据文件,里面的数据是以键值对的方式存储的.java中map就是键值对的形式,我们带着这个概念去理解.举个例子: school ...

  8. python3 读取配置文件中的参数值替换yaml文件中的占位符(变量)

    要替换内容的yaml文件:temp.yaml 也就是要将"$$PLACEHOLDER$$"进行替换. --- applications: - name: $$NAME$$-$$DA ...

  9. python中yaml模块的使用_详解Python yaml模块

    一.yaml文件介绍 yaml是一个专门用来写配置文件的语言. 1. yaml文件规则 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元 ...

最新文章

  1. mysql 5.6 双向互备_mysql双主互备
  2. tomcat php模块化运行,Windows下 Tomcat 运行 PHP 的配置
  3. linux 服务器进程,如何查看Linux服务器的进程
  4. 火焰传感器感应有火亮灯代码_智能无线感应灯火了,光感人感2种传感器感应,做照明品牌的几光...
  5. Python图片文字识别——Windows下Tesseract-OCR的安装与使用
  6. android ril移植,Quectel_Android_RIL_SR01A40V36 EC20安卓移植资料和相关代码 - 下载 - 搜珍网...
  7. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0x80 in position 2
  8. hdu1274 展开字符串
  9. 关于召回率和hit rate
  10. springboot学习笔记(三)使用JDBC以及整合spring data jpa
  11. ArcMap10.2 选项(Options)窗口显示不完整问题解决(以默认加载栅格数据去背景显示设置为例)
  12. redis单点故障问题
  13. 基于DSP的注塑机运动控制器和算法设计
  14. 孔雀石绿磷酸盐检测试剂盒的特点和应用
  15. 使用RedisTemplate批量存入数据,100万测试 需要1分钟
  16. php 模拟蜘蛛,PHP模拟百度蜘蛛,伪造IP爬行网站,附源代码
  17. 51智能小车(舵机、超声波、蓝牙)
  18. 【雷达与对抗】【2014.09】无源双基地雷达系统的目标检测与成像
  19. Xcode7真机调试iOS10
  20. 名悦集团:汽车保养和使用寿命真的是正相关

热门文章

  1. 分布式锁的几种实现原理
  2. C语言程序设计第三次作业
  3. java高级----Thread之CyclicBarrier的使用
  4. Django Views(视图函数)
  5. 用UIpickView实现省市的联动
  6. Android开发最佳实践《IT蓝豹》
  7. Xubuntu菜单删改条记
  8. 图解一步步安装SharePoint Foundation 2010
  9. 用SmarterFox替换Internet Explorer的“加速器”
  10. 下载: 虾米音乐_您所说的内容:如何组织凌乱的音乐收藏