当前位置:网站首页>Goal: do not exclude yaml syntax. Try to get started quickly

Goal: do not exclude yaml syntax. Try to get started quickly

2022-07-07 21:18:00 Look, the future

 Please add a picture description

Reading guide

The three years , except Makefile, I've never touched such a strange grammar . Of course Makefile I decided to give up , Because I can write CMake Hey .

You have to do it , Something to be used soon . Read through the grammar first , Not much anyway , Take it later Python Let's demonstrate that the world may feel clear ( Have to say ,Python What a good thing )


yaml ?

  • Scripting language .
  • For writing configuration files .
  • The suffix is .yml.
  • play docker、k8s There must be no escape from this .

yaml Basic grammar

  • 1、 Case sensitive .
  • 2、 Use indentation to indicate hierarchy , The number of spaces is not important , The same level can be consistent .
  • 3、 Indenting is not allowed tab, Only spaces .
  • 4、# Table annotation .

yaml data type

object : Set of key value pairs , Also known as mapping (mapping)/ Hash (hashes) / Dictionaries (dictionary)
Array : A set of values in order , Also called sequence (sequence) / list (list)
Pure quantity (scalars): A single 、 Nonseparable value

object

I can't bear it , We turn on python Editor for .

pip install pyyaml

Object key value pairs are represented by colons key: value, Add a space after the colon .

You can also use key:{key1: value1, key2: value2, …}.

You can also use indentation to represent hierarchical relationships ;

key: 
    child-key: value
    child-key2: value2

We use it Python To transform :

import yaml

f = open("yaml1.yaml")

res = yaml.safe_load(f)

print(res)

/yaml_test/main.py

{
    'key': {
    'child-key': 'value', 'child-key2': 'value2'}}

Process finished with exit code 0

More complex object formats , You can use a question mark and a space to represent a complex key, A colon with a space represents a value:

? 
    - complexkey1
    - complexkey2
: 
    - complexvalue1
    - complexvalue2

This means that the property of an object is an array [complexkey1,complexkey2], The corresponding value is also an array [complexvalue1,complexvalue2]

( In the tutorial , however Python Can't be transformed , So I'm not sure . But it's also my first contact , So I can only put my words here .)


Array

With - The first row represents an array :

- A
- B
- C
/yaml_test/main.py
['A', 'B', 'C']

Process finished with exit code 0

YAML Support multidimensional array , You can use in line representation :

key: [value1, value2, …]

A child member of a data structure is an array , You can indent a space under the item .

-
 - A
 - B
 - C
yaml_test/main.py
[['A', 'B', 'C']]

Process finished with exit code 0

A relatively complex example :

companies:
    -
        id: 1
        name: company1
        price: 200W
    -
        id: 2
        name: company2
        price: 500W
/yaml_test/main.py
{
    'companies': [{
    'id': 1, 'name': 'company1', 'price': '200W'}, {
    'id': 2, 'name': 'company2', 'price': '500W'}]}

Process finished with exit code 0

intend companies Property is an array , Each array element is made up of id、name、price An object composed of three attributes .

Arrays can also use streaming (flow) How to express :

companies: [{
    id: 1,name: company1,price: 200W},{
    id: 2,name: company2,price: 500W}]

( Wouldn't it be nice to write that directly ? I'm shallow )


Composite structure

Arrays and objects can form a composite structure , example :

languages:
  - Ruby
  - Perl
  - Python 
websites:
  YAML: yaml.org 
  Ruby: ruby-lang.org 
  Python: python.org 
  Perl: use.perl.org

Convert to json by :

I won't let this out , You can see for yourself .


Pure quantity

Pure quantity is the most basic , Nonseparable value , Include :

 character string 
 Boolean value 
 Integers 
 Floating point numbers 
Null
 Time 
 date 

Use an example to quickly understand the basic use of scalar :

boolean: 
    - TRUE  #true,True Fine 
    - FALSE  #false,False Fine 
float:
    - 3.14
    - 6.8523015e+5  # You can use scientific counting 
int:
    - 123
    - 0b1010_0111_0100_1010_1110    # Binary representation 
null:
    nodeName: 'null'
    parent: ~  #  Use ~ Express null
#  It shows that  None
string:
    -  ha-ha 
    - 'Hello world'  # Special characters can be wrapped in double quotes or single quotes 
    - newline
      newline2    # Strings can be split into multiple lines , Each line is converted to a space 
yaml_test/main.py
{
    'string': [' ha-ha ', 'Hello world', 'newline newline2']}

Process finished with exit code 0
date:
    - 2018-02-17    # Date must use ISO 8601 Format , namely yyyy-MM-dd
datetime: 
    - 2018-02-17T15:02:31+08:00    # Time use ISO 8601 Format , Use... Between time and date T Connect , Finally using + Represents the time zone 
yaml_test/main.py
{
    'date': [datetime.date(2018, 2, 17)], 'datetime': [datetime.datetime(2018, 2, 17, 15, 2, 31, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))]}

Process finished with exit code 0

quote

( This part is operated by me k8s I haven't met in this period of time )

& Anchor points and * Alias , Can be used to quote :

defaults: &defaults
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  <<: *defaults

test:
  database: myapp_test
  <<: *defaults

amount to :

defaults:
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  adapter:  postgres
  host:     localhost

test:
  database: myapp_test
  adapter:  postgres
  host:     localhost
yaml_test/main.py
{
    'defaults': {
    'adapter': 'postgres', 'host': 'localhost'}, 'development': {
    'adapter': 'postgres', 'host': 'localhost', 'database': 'myapp_development'}, 'test': {
    'adapter': 'postgres', 'host': 'localhost', 'database': 'myapp_test'}}

Process finished with exit code 0

& Used to build anchors (defaults),<< Represents merging into the current data ,* Used to reference anchor points .

Here's another example :

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

To Json The code is as follows :

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

What about that ?:

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

Small tips:
If JSON Too long , You can make it .json Drag the file to Firefox to see .

原网站

版权声明
本文为[Look, the future]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207071834337551.html