jq数组过滤从一个文件到另一个文件

jq array filtration from a file to another file

我有下面的 json,我想在其中过滤掉 result 对象,它是一个使用一些脚本的数组,因为结果对象可以填充多个对象它。我想从“jq -c .results[i]."com.src.main.client.details" 中获取数据到 json 文件中以进一步处理。

{
    "foo": {
        "requestID": "89279f54-2f18-4301-b94d-1c413be1cb68",
        "signature": {
            "*": "*"
        }
    },
    "results": [
        {
            "com.src.main.client.details": {
                "doc": "string",
                "details": [
                    {
                        "amount": null,
                        "output": null,
                        "properties": [],
                        "characteristic": [],
                        "component": null,
                        "period": null,
                        "internals": {
                            "Currency": "EUR",
                           "value": 0
                        }
                    }
                ]
            }
        },
        {
            "com.src.main.client.details": {
                "doc": "string",
                "details": [
                    {
                        "amount": null,
                        "output": null,
                        "properties": [
                            {
                                "characteristic": [],
                                "component": null,
                                "period": null,
                                "internals": {
                                    "Currency": "EUR",
                                    "value": 0
                                }
                            }
                        ]
                    }
                ]
            }
        }
    ]
}

有没有一种方法可以通过一个命令实现它,或者是否有人可以建议脚本逻辑。谢谢

期望输出:

[
  {
    "doc": "string",
    "details": [
      {
        "amount": null,
        "output": null,
        "properties": [],
        "characteristic": [],
        "component": null,
        "period": null,
        "internals": {
          "Currency": "EUR",
          "value": 0
        }
      }
    ]
  },
  {
    "doc": "string",
    "details": [
      {
        "amount": null,
        "output": null,
        "properties": [
          {
            "characteristic": [],
            "component": null,
            "period": null,
            "internals": {
              "Currency": "EUR",
              "value": 0
            }
          }
        ]
      }
    ]
  }
]

三期。


.results[i] 应该是 .results[]


以下生成 JSON 个对象流:

.results[]."com.src.main.client.details"

要获取数组,请使用

[ .results[]."com.src.main.client.details" ]

.results | map(."com.src.main.client.details")

最后,还有一个 shell 引用问题。在“类似 sh”的 shell 中,您需要

jq -c '.results | map(."com.src.main.client.details")'

注意单引号。


Demo 在 jqplay