在 .NET 中使用 C# 处理 YAML
在 .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相关推荐
- OpenCV中XML文件和YAML文件的读写
OpenCV中XML文件和YAML文件的读写 代码如下: #include <opencv2/core/core.hpp> #include <iostream> #inclu ...
- vue中使用CodeMirror解析yaml语言
vue中使用CodeMirror解析yaml语言 一.CodeMirror插件使用 1.CodeMirror插件安装 二.CodeMirror基本配置 三.CodeMirror具体使用 1.首先创建一 ...
- 关于 Kubernetes 中通过 Kustomize 定制 Yaml资源文件的一些笔记
写在前面 分享一些 Kustomize 的笔记 博文内容涉及: Kustomize 的简单介绍 Kustomize 安装 Kustomize 生成资源yaml 文件 Demo 理解不足小伙伴帮忙指正 ...
- 关于Kubernetes 中通过 Kustomize 实现YAML资源文件组合与继承的一些笔记
写在前面 分享一些通过Kustomize 实现YAML资源文件组合与继承的笔记 官方文档里叫做组织和定制,这里这么叫方便理解 博文内容基本为官网文档内容 理解不足小伙伴帮忙指正 傍晚时分,你坐在屋檐下 ...
- OpenCV4中读取摄像头参数YAML文件(C++和C#)
0:环境 OpenCV4.1.2 + Win10 + Visual Studio2019 我的工程是C#的,需要程序读取摄像头参数yaml中的摄像头参数矩阵.畸变矩阵. 其实这些opencv都已经帮我 ...
- yaml文件以及k8s相关yaml字段解析,kubeedge中deviceModel与device.yaml字段解析
YAML基本语法 使用空格做为缩进 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 一般开头缩进两个空格 字符后面缩进一个空格,比如冒号: ,逗号 等后面 低版本缩进时不允许使用Tab 键,只允 ...
- java中snakeyaml工具包操作yaml文件,什么是yaml文件,yaml如何解析转换为实体,实体如何生成yaml文件
什么是yaml文件 这里就不去搞yaml的书面意思了,其实就可以理解为一种数据文件,里面的数据是以键值对的方式存储的.java中map就是键值对的形式,我们带着这个概念去理解.举个例子: school ...
- python3 读取配置文件中的参数值替换yaml文件中的占位符(变量)
要替换内容的yaml文件:temp.yaml 也就是要将"$$PLACEHOLDER$$"进行替换. --- applications: - name: $$NAME$$-$$DA ...
- python中yaml模块的使用_详解Python yaml模块
一.yaml文件介绍 yaml是一个专门用来写配置文件的语言. 1. yaml文件规则 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元 ...
最新文章
- mysql 5.6 双向互备_mysql双主互备
- tomcat php模块化运行,Windows下 Tomcat 运行 PHP 的配置
- linux 服务器进程,如何查看Linux服务器的进程
- 火焰传感器感应有火亮灯代码_智能无线感应灯火了,光感人感2种传感器感应,做照明品牌的几光...
- Python图片文字识别——Windows下Tesseract-OCR的安装与使用
- android ril移植,Quectel_Android_RIL_SR01A40V36 EC20安卓移植资料和相关代码 - 下载 - 搜珍网...
- UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0x80 in position 2
- hdu1274 展开字符串
- 关于召回率和hit rate
- springboot学习笔记(三)使用JDBC以及整合spring data jpa
- ArcMap10.2 选项(Options)窗口显示不完整问题解决(以默认加载栅格数据去背景显示设置为例)
- redis单点故障问题
- 基于DSP的注塑机运动控制器和算法设计
- 孔雀石绿磷酸盐检测试剂盒的特点和应用
- 使用RedisTemplate批量存入数据,100万测试 需要1分钟
- php 模拟蜘蛛,PHP模拟百度蜘蛛,伪造IP爬行网站,附源代码
- 51智能小车(舵机、超声波、蓝牙)
- 【雷达与对抗】【2014.09】无源双基地雷达系统的目标检测与成像
- Xcode7真机调试iOS10
- 名悦集团:汽车保养和使用寿命真的是正相关