我可以使用 jq 来使用 JSON 文件中的参数来过滤和修改另一个 JSON 文件吗?

Can I use jq for using parameters from a JSON file to filter and modify another JSON file?

假设我有两个输入 JSON 文件。第一个是:

[
    {
        "name": "one",
        "keyB": "2",
        "keyC": "3"
    },
    {
        "name": "two",
        "keyB": "15",
        "keyC": "20"
    }
]

第二个:

{
    "name": "one",
    "type": "FeatureCollection",
    "features": [
        {
            "name": "one",
            "valueA": "0",
            "valueB" : "0"
        },  
        {
            "name": "two",
            "valueA": "11",
            "valueB": "21"
        },
        {
            "name": "one",
            "valueA": "21",
            "valueB": "30"
        },  
        {
            "name": "two",
            "valueA": "1",
            "valueB": "2"
        },
        {
            "name": "one",
            "valueA": "2",
            "valueB": "3"
        },  
        {
            "name": "two",
            "valueA": "5",
            "valueB": "3"
        }
    ]
}

我想创建一个逻辑,当第一个文件的 .[].name 等于第二个文件的 .features[].name 时,我将第一个文件的相应键连接到第二个文件(考虑到第一个文件中 .[].name 的值始终是唯一的)。所以结果如下:

{
    "name": "one",
    "type": "FeatureCollection",
    "features": [
        {
            "name": "one",
            "valueA": "0",
            "valueB" : "0",
            "keyB": "2",
            "keyC": "3"
        },  
        {
            "name": "two",
            "valueA": "11",
            "valueB": "21",
            "keyB": "15",
            "keyC": "20"
        },
        {
            "name": "one",
            "valueA": "21",
            "valueB": "30",
            "keyB": "2",
            "keyC": "3"
        },  
        {
            "name": "two",
            "valueA": "1",
            "valueB": "2",
            "keyB": "15",
            "keyC": "20"
        },
        {
            "name": "one",
            "valueA": "2",
            "valueB": "3",
            "keyB": "2",
            "keyC": "3"
        },  
        {
            "name": "two",
            "valueA": "5",
            "valueB": "3",
            "keyB": "15",
            "keyC": "20"
        }
    ]
}

在此输出中,我只是检查了 name 在两个 JSON 文件中的相等位置,然后我在 name == "one" 和 [=21] 中引入了键 keyB: "2", "keyC": "3" =] 其中 name == "two"。有可能用jq做吗?我可以使用两个 JSON 文件,从一个文件获取参数并将其提供给另一个文件吗?

是的,把第一个保存在变量中。

INDEX(.name) as $p | inputs | .features |= map($p[.name] + .)

Online demo