yaml-基本格式和JavaScript之間的轉換


python處理yaml格式文檔的官方文檔:https://pyyaml.org/wiki/PyYAMLDocumentation

yaml是一個可讀性高,用來表達數據序列化的格式,通常作為配置文件使用。yaml文件是python文件的解析器和發射器(parser and emitter)

yaml語法

  • 大小寫敏感
  • 使用縮進表示層級關系
  • 縮進時不允許使用Tab鍵,只允許使用空格。
  • 縮進的空格數目不重要,只要相同層級的元素左側對齊即可

yaml支持的數據結構

  • 對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 數組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
  • 純量(scalars):單個的、不可再分的值.javaScrip中的純量有:字符串、布爾值、整數、浮點數、Null、時間、日期

yaml最常用的格式表示方式

  1. 對象的一組鍵值對,使用冒號結構表示。
animal: pets
  1. 一組連詞線開頭的行,構成一個數組。
- Cat
- Dog
- Goldfish
  1. 對象和數組可以結合使用,形成復合結構。
languages:
 - Ruby
 - Perl
 - Python 
websites:
 YAML: yaml.org 
 Ruby: ruby-lang.org 
 Python: python.org 
 Perl: use.perl.org 
  1. 兩組數據的時候用---分割或者數組嵌套的方法
- Cat
- Dog
- Goldfish
---
- Cat
- Dog
- Goldfish

yaml中比較高級的表示

  1. null~表示。
parent: ~ 
  1. 多行字符串可以使用|保留換行符,也可以使用>折疊換行。
this: |
  Foo
  Bar
that: >
  Foo
  Bar

轉為 JavaScript 代碼如下。

{ this: 'Foo\nBar\n', that: 'Foo Bar\n' }
  1. +表示保留文字塊末尾的換行,-表示刪除字符串末尾的換行。
s1: |
  Foo

s2: |+
  Foo


s3: |-
  Foo

轉為 JavaScript 代碼如下。

{ s1: 'Foo\n', s2: 'Foo\n\n\n', s3: 'Foo' }
  1. 錨點&和別名*,可以用來引用。
defaults: &defaults
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  <<: *defaults

test:
  database: myapp_test
  <<: *defaults

等同於下面的代碼。

defaults:
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  adapter:  postgres
  host:     localhost

test:
  database: myapp_test
  adapter:  postgres
  host:     localhost
  1. &用來建立錨點(defaults),<<表示合並到當前數據,*用來引用錨點。

下面是另一個例子。

- &showell Steve 
- Clark 
- Brian 
- Oren 
- *showell 

轉為 JavaScript 代碼如下。

[ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]

函數和正則表達式的轉換

這是 JS-YAML 庫特有的功能,可以把函數和正則表達式轉為字符串。

# example.yml
fn: function () { return 1 }
reg: /test/

解析上面的 yml 文件的代碼如下。

var yaml = require('js-yaml');
var fs   = require('fs');

try {
var doc = yaml.load(
 fs.readFileSync('./example.yml', 'utf8')
);
console.log(doc);
} catch (e) {
console.log(e);
}

從 JavaScript 對象還原到 yaml 文件的代碼如下。

var yaml = require('js-yaml');
var fs   = require('fs');

var obj = {
fn: function () { return 1 },
reg: /test/
};

try {
fs.writeFileSync(
 './example.yml',
 yaml.dump(obj),
 'utf8'
);
} catch (e) {
console.log(e);
}

python處理yaml文件的常用方法:https://www.cnblogs.com/saiminhou/p/13729119.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM