YAML
- 정의
- YAML Ain't Makrup Language
- YAML is a human friendly data serialization standard for all programming language
- 구조 데이터의 표현 기법
- 설정파일, data 저장할 때 사용
- 공식사이트 : www.yaml.org
- 필요지식: ruby
YAML을 사용해 보자.
$ touch mydata.yml
$ parse.rb
bash-4.1# cat mydata.yml
- d1
- d2
- d3
require 'yaml'
d = YAML.load_file('mydata.yml')
p d
bash-4.1# ruby parse.rb
["d1", "d2", "d3"]
시퀀스를 사용해 보자.
- 시퀀스 (배열)
- 매핑 (해쉬): -(공백)data
- -뒤에 반드시 공백이 필요함.
탭은 사용하지 않으며 주로 공백x2를 사용
예시 3-1
- d1
- d2
- d3
["d1", "d2", "d3"]
- d1
-
- x1
- x2
- d3
["d1", ["x1", "x2"], "d3"]
- 예시 3-3: d2를 쓸 경우 이하는 자료로 함께 인식된다.
- d1
- d2
- x1
- x2
- d3
bash-4.1# ruby parse.rb
["d1", "d2 - x1 - x2", "d3"]
매핑: 키값과 값을 함께 쓴다.
name: hephaex
email: hephaex@gmail.com
bash-4.1# ruby parse.rb
{"email"=>"hephaex@gmail.com", "name"=>"hephaex"}
name: hephaex
emails:
main: hephaex@gmail.com
sub: hephaex@yahoo.co.kr
{"email"=>{"sub"=>"hephaex@yahoo.co.kr", "main"=>"hephaex@gmail.com"}, "name"=>"hephaex"}
복잡한 자료 구조를 사용해 보자.
- name: hephaex
email: hephaex@gmail.com
- name: hephaex2
email: hephaex+sub@gmail.com
[{"email"=>"hephaex@gmail.com", "name"=>"hephaex"}, {"email"=>"hephaex+sub@gmail.com", "name"=>"hephaex2"}]
name:
- apple
- banana
cost:
- 1000
- 2000
{"cost"=>[1000, 2000], "name"=>["apple", "banana"]}
block style, flow style
- d1
- d2
- d3
[d1, d2]
{name: apple}
name: [apple, banana]
cost: {apple: 1000, banana: 2000}
{"cost"=>{"apple"=>1000, "banana"=>2000}, "name"=>["apple", "banana"]}
각종 데이터를 표현해보자.
str: hello
num1: 5
num2: 3.14
bool1: true
bool2: false
- nothing: null
- date: 2014-10-12
- d1: "5"
{"nothing"=>nil, "cost"=>{"banana"=>2000, "apple"=>1000}, "name"=>["apple", "banana"], "d1"=>"5", "date"=>#<Date: 4913885/2,0,2299161>, "bool2"=>false, "bool1"=>true, "num2"=>3.14, "num1"=>5}
개행을 포함한 데이터를 처리해 보자.
doc1:
aaa
bbb
ccc
doc2: |
aaa
bbb
ccc
doc3: >
aaa
bbb
ccc
- |
aaa
bbb
ccc
doc1:
aaa
bbb
ccc
doc2: |
aaa
bbb
ccc
doc3: >
aaa
bbb
ccc
{"doc3"=>["aaa\nbbb\nccc\n"], "doc2"=>"aaa\nbbb\nccc\n", "doc1"=>"aaa bbb ccc"}
- |
aaa
bbb
ccc
["aaa\nbbb\nccc\n"]
... 와 --- 를 사용해 보자.
- d1
- d2
...
- d3
["d1", "d2"]
---
- d1
- d2
- d3
---
- x1
- x2
require 'yaml'
File.open('mydata.yml') do |io|
YAML.load_documents(io) do |d|
p d
end
end
["d1", "d2", "d3"]
["x1", "x2"]
댓글 없음:
댓글 쓰기