YAML эквивалент массива объектов в JSON


у меня есть массив JSON объектов, которые я пытаюсь преобразовать в YAML.

{"AAPL": [
  {
    "shares": -75.088,
    "date": "11/27/2015"
  },
  {
    "shares": 75.088,
    "date": "11/26/2015"
  },
]}

есть ли эквивалентное представление в YAML, которое не просто JSON? Я бы хотел сделать что-то вроде

AAPL:
  - :
    shares: -75.088
    date: 11/27/2015
  - :
    shares: 75.088
    date: 11/26/2015

но самое чистое, что я придумал-это

AAPL:
  - {
    shares: -75.088,
    date: 11/27/2015
  }
  {
    shares: 75.088,
    date: 11/26/2015
  }
1 65

1 ответ:

TL; DR

вы хотите это:

AAPL:
  - shares: -75.088
    date: 11/27/2015
  - shares: 75.088
    date: 11/26/2015

отображений

эквивалент YAML объекта JSON-это отображение, которое выглядит следующим образом:

# flow style
{ foo: 1, bar: 2 }
# block style
foo: 1
bar: 2

обратите внимание, что первые символы ключей в сопоставлении блоков должны быть в том же столбце. Чтобы продемонстрировать:

# OK
   foo: 1
   bar: 2
# Parse error
   foo: 1
    bar: 2

последовательности

эквивалент массива JSON в YAML-это последовательность, которая выглядит как любая из них (которые являются эквивалент):

# flow style
[ foo bar, baz ]
# block style
- foo bar
- baz

в блочной последовательности -s должна быть в том же столбце.

JSON to YAML

давайте превратим ваш JSON в YAML. Вот ваш JSON:

{"AAPL": [
  {
    "shares": -75.088,
    "date": "11/27/2015"
  },
  {
    "shares": 75.088,
    "date": "11/26/2015"
  },
]}

как точка мелочи, YAML является надмножеством JSON, поэтому выше уже действителен YAML-но давайте на самом деле использовать функции YAML, чтобы сделать это красивее.

начиная с внутренней стороны, у нас есть объекты, которые выглядят так это:

{
  "shares": -75.088,
  "date": "11/27/2015"
}

эквивалентное отображение YAML:

shares: -75.088
date: 11/27/2015

у нас есть два из них в массиве (последовательности):

  • акции: -75.088 дата: 27.11.2015
  • акции: 75.088 дата: 26.11.2015

обратите внимание:-s как вверх и первые символы клавиш отображения выстраиваются в линию.

наконец, эта последовательность сама является значением в сопоставлении с ключом AAPL:

AAPL:
  - shares: -75.088
    date: 11/27/2015
  - shares: 75.088
    date: 11/26/2015

разбор этого и преобразование его обратно в JSON дает ожидаемый результат:

{
  "AAPL": [
    {
      "date": "11/27/2015", 
      "shares": -75.088
    }, 
    {
      "date": "11/26/2015", 
      "shares": 75.088
    }
  ]
}

вы можете увидеть его (и редактировать его в интерактивном режиме)здесь.