TL; DR
Chcesz to:
AAPL:
- shares: -75.088
date: 11/27/2015
- shares: 75.088
date: 11/26/2015
Mapowania
Odpowiednikiem YAML obiektu JSON jest odwzorowanie, które wygląda następująco:
# flow style
{ foo: 1, bar: 2 }
# block style
foo: 1
bar: 2
Zauważ, że pierwsze znaki kluczy w odwzorowaniu bloków muszą znajdować się w tej samej kolumnie. Aby zademonstrować:
# OK
foo: 1
bar: 2
# Parse error
foo: 1
bar: 2
Sekwencje
Odpowiednikiem tablicy JSON w YAML jest sekwencja, która wygląda jak jedna z tych (które są równoważne):
# flow style
[ foo bar, baz ]
# block style
- foo bar
- baz
W sekwencji bloków -
s muszą znajdować się w tej samej kolumnie.
JSON do YAML
Zmieńmy JSON w YAML. Oto twój JSON:
{"AAPL": [
{
"shares": -75.088,
"date": "11/27/2015"
},
{
"shares": 75.088,
"date": "11/26/2015"
},
]}
Ciekawostką jest, że YAML jest nadzbiorem JSON, więc powyższe jest już prawidłowe YAML - ale w rzeczywistości skorzystajmy z funkcji YAML, aby uczynić to ładniejszym.
Zaczynając od wewnątrz, mamy obiekty, które wyglądają tak:
{
"shares": -75.088,
"date": "11/27/2015"
}
Równoważne odwzorowanie YAML to:
shares: -75.088
date: 11/27/2015
Mamy dwa z nich w tablicy (sekwencji):
- shares: -75.088
date: 11/27/2015
- shares: 75.088
date: 11/26/2015
Zwróć uwagę, jak ustawiają się w -
linii s i pierwsze znaki klawiszy mapowania.
Wreszcie, ta sekwencja sama w sobie jest wartością w mapowaniu za pomocą klucza AAPL
:
AAPL:
- shares: -75.088
date: 11/27/2015
- shares: 75.088
date: 11/26/2015
Analiza tego i konwersja z powrotem do JSON daje oczekiwany wynik:
{
"AAPL": [
{
"date": "11/27/2015",
"shares": -75.088
},
{
"date": "11/26/2015",
"shares": 75.088
}
]
}
Możesz go zobaczyć (i edytować interaktywnie) tutaj .
Świetna odpowiedź powyżej. Innym sposobem jest użycie wspaniałego narzędzia do pakowania yaml jq, yq na https://github.com/kislyuk/yq
Zapisz przykład JSON w pliku, powiedzmy ex.json, a następnie
źródło