yaml文法-yaml轉golang

來源:互聯網
上載者:User

基本規則

YAML有以下基本規則: 

1、大小寫敏感 

2、使用縮排展示層級關係 

3、禁止使用tab縮排,只能使用空格鍵 

4、縮排長度沒有限制,只要元素對齊就表示這些元素屬於一個層級。 

5、使用#表示注釋 

6、字串可以不用引號標註

1、map,散列表 

使用冒號(:)表示索引值對,同一縮排的所有索引值對屬於一個map,樣本:

# YAML表示

age : 12

name : huang

# 對應的Json表示

{'age':12,'name':'huang'}

也可以將一個map寫在一行:

# YAML表示

{"age":12,name:huang} #"age"表示字串

# 對應的Json表示

{'age':12,'name':'huang'}

2、list,數組 

使用連字號(-)表示:

# YAML表示

- a

- b

- 12

# 對應Json表示

['a','b',12]

也可以寫在一行:

# YAML表示

[a,b,c]

# 對應Json表示

[ 'a', 'b', 'c' ]

3、scalar,純量 

資料最小的單位,不可以再分割。

資料結構嵌套

map和list的元素可以是另一個map或者list或者是純量。由此出現4種常見的資料嵌套

1、map嵌套map

# YAML表示

websites:

 YAML: yaml.org 

 Ruby: ruby-lang.org 

 Python: python.org 

 Perl: use.perl.org 

# 對應Json表示

{ websites: 

   { YAML: 'yaml.org',

     Ruby: 'ruby-lang.org',

     Python: 'python.org',

     Perl: 'use.perl.org' } }

2、map嵌套list

# YAML表示

languages:

 - Ruby

 - Perl

 - Python 

 - c

# 對應Json表示

{ languages: [ 'Ruby', 'Perl', 'Python', 'c' ] }

3、list嵌套list

# YAML表示

-

  - Ruby

  - Perl

  - Python 

  - c

  - c++

  - java

# 對應Json表示

[ [ 'Ruby', 'Perl', 'Python' ], [ 'c', 'c++', 'java' ] ]

除此以外,還可以如下表示該結構

# 方法2

- - Ruby

  - Perl

  - Python 

- - c

  - c++

  - java

# 方法3

- [Ruby,Perl,Python]

- [c,c++,java]

4、list嵌套map

# YAML表示

-

  id: 1

  name: huang

-

  id: 2

  name: liao

# 對應Json表示

[ { id: 1, name: 'huang' }, { id: 2, name: 'liao' } ]


深入

#Block style表示結構體

block_style:  

    clark : Evans

    ingy  : döt Net

    oren  : Ben-Kiki

如:

BlockStyle struct{ 

Clark string  yaml:"clark"`

Ingy:string  yaml:"ingy"`

Oren:string  yaml:"oren"`

}` yaml:"block_style"`

yaml 轉 golang

data, err := ioutil.ReadFile(./xxx.yaml)

if err != nil {

entry.WithError(err).Panicln("讀取檔案失敗")

}

bs := BlockStyle{}

if err := yaml.Unmarshal(data, &bs); err != nil {

entry.WithError(err).Panicln("還原序列化失敗")

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.