我有一个 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
}
最佳答案
你想要这个:
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:
{"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 文件?
android - 如何在 Android 中解析 JSON?
python - json.load() 和 json.loads() 函数有什么区别
android - 如何在 Android 中使用 HTTPClient 以 JSON 格式发送 P
javascript - 通过 JavaScript 动态创建 JSON 对象(没有连接字符串)
javascript - 如何动态创建 JavaScript 数组(JSON 格式)?