首页 > 解决方案 > 如何正确格式化此 jsonnet 数组输出?

问题描述

我有以下 JSON,并且正在使用 -y 选项来生成 yaml 输出。

{
  array: [
    {item1: 1},
    {item2: 2},    
  ]   
}

我想生产(需要)

{
   "array": 
      -  "item1": 1,
      -  "item2": 2
}

但我得到

{
   "array": [
      {
         "item1": 1
      },
      {
         "item2": 2
      }
   ],
}

注意实际输出中的大括号。是否可以使用 jsonnet 生成所需的 yaml 输出?

标签: jsonnet

解决方案


如果您想从此开始(有效的 JSON 和有效的 YAML):

{
   "array": [
      {
         "item1": 1
      },
      {
         "item2": 2
      }
   ],
}

对此:

array:
  - item1: 1
  - item2: 2

您可以将结果通过管道传输yq

$ cat input.jsonnet
{
  array: [
    {item1: 1},
    {item2: 2},    
  ]   
}
$ jsonnet input.jsonnet | yq -y
array:
  - item1: 1
  - item2: 2

如果您真的希望最终输出如下所示:

{
  "array":
    - item1: 1
    - item2: 2
}

请注意,这既不是有效的 JSON 也不是有效的 YAML(例如,尝试将其粘贴到 YAML 验证器中)。您需要编写某种自定义输出格式来获得该输出(也许“自定义输出格式”部分中的文档在这方面会有所帮助,尽管我自己没有尝试过任何这些)。


推荐阅读