arrays - 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
  }

最佳答案

TL;DR

你想要这个:

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

映射

JSON 对象的 YAML 等价物是一个映射,如下所示:

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

请注意, block 映射中键的第一个字符必须在同一列中。演示:

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

序列

YAML 中 JSON 数组的等价物是一个序列,它看起来像以下任何一种(它们是等价的):

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

在一个 block 序列中,-s 必须在同一列中。

JSON 到 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

我们在一个数组(序列)中有两个:

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

注意 - 的排列方式以及映射键的第一个字符排列方式。

最后,这个序列本身就是与键 AAPL 的映射中的一个值:

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

解析这个并将其转换回 JSON 会产生预期的结果:

console.log(jsyaml.load(`
AAPL:
  - shares: -75.088
    date: 11/27/2015
  - shares: 75.088
    date: 11/26/2015
`));
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/4.1.0/js-yaml.min.js"></script>

您可以看到它(并以交互方式对其进行编辑)here .

https://stackoverflow.com/questions/33989612/

相关文章:

c# - 在 JSON.NET 中反序列化的转换接口(interface)

json - 如何在 ECMAScript 6 中导入 JSON 文件?

json - 如何在结构中定义多个名称标签

android - 如何在 Android 中解析 JSON?

python - json.load() 和 json.loads() 函数有什么区别

android - 如何在 Android 中使用 HTTPClient 以 JSON 格式发送 P

javascript - 通过 JavaScript 动态创建 JSON 对象(没有连接字符串)

javascript - 如何动态创建 JavaScript 数组(JSON 格式)?

c# - JSON.net:如何在不使用默认构造函数的情况下反序列化?

mysql - 在 MySQL 中以 JSON 格式存储数据