YAML

YAML (YAML Ain't a Markup Language),通常以.yml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,一种专门用来写配置文件的语言。可用于如: Java,C/C++, Ruby, Python, Perl, C#, PHP等。

语法

  1. 大小写敏感

  2. 使用缩进表示层级关系

  3. 缩进时不允许使用Tab键,只允许使用空格。

  4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

{
	"TransExcute": {
		"InitDefault":"Console.WriteLine(\"123\");" ,
		"IdleToArming": "Console.WriteLine(\"456\");",
        "ArmingDefault":"Console.WriteLine(\"789\");" 
        }
}
TransExcute:
  InitDefault: 'Console.WriteLine("123");'
  IdleToArming: 'Console.WriteLine("456");'
  ArmingDefault: 'Console.WriteLine("789");' 
{
	"AliasTable": {
		"Debug": {
			"GetPath": "/DT1/relay/Resource/DT/Debug",
			"DefaultValue":1
		},
		"VirtualGCState": {
			"GetPath": "/DT1/relay/Resource/DT/VirtualGCState"
		}
	}
}
AliasTable:
  Debug: 
   GetPath: '/DT1/relay/Resource/DT/Debug'
   DefaultValue: 1
  VirtualGCState: 
   GetPath:  '/DT1/relay/Resource/DT/VirtualGCState'
{
	"States": [
		{
			"StateNo": 0,
			"StateName": "Init",
			"DefaultNs": 1,
			"Transitions": []
		},
		{
			"StateNo": 1,
			"StateName": "Idle",
			"DefaultNs": 1,
			"Transitions": [
				{
					"TransitionName": "IdleToArming",
					"ConditonExpr": "true",
					"NextState": 0
				}
			]
		}
	],
	"CurrentState":0,
	"RunCycleTime":10000
}
States:
 - StateNo: 0
   StateName: 'Init'
   DefaultNs: 1
   Transitions: []
 - StateNo: 1
   StateName: 'Idle'
   DefaultNs: 1
   Transitions: 
    - TransitionName: 'IdleToArming'
      ConditonExpr: 'true'
      NextState: 0
CurrentState: 0
RunCycleTime: 10000

c#yaml库

有YamlDotNet的nuget包 但是看了以下没找到类似于json的JsonConvert.PopulateObject的功能,只能一个成员变量一个成员变量的赋值,就比较累赘。


本文章使用limfx的vscode插件快速发布