首页 > 解决方案 > 替换多个 JSON 文件中对象属性的值

问题描述

我正在处理位于同一文件夹中的多个 JSON 文件。

文件包含具有相同属性的对象,例如:

{  
    "identifier": "cameraA",
    "alias": "a",
    "rtsp": "192.168.1.1"
}

我想在特定条件下同时替换 JSON 文件中所有对象的属性。

例如,假设我想用等于“cameraA”的标识符替换对象的所有 rtsp 值。

我一直在尝试类似的东西:

 jq 'if .identifier == \"cameraA" then .rtsp=\"cameraX" else . end' -c *.json

但它不起作用。

有没有一种简单的方法可以在多个 JSON 文件中替换对象的属性?

标签: jsonpowershellfilejq

解决方案


jq 只能写入 STDIN 和 STDOUT,因此最简单的方法是一次处理一个文件,例如将 jq 程序放在 shell 循环中。 采用这种方法时经常使用

但是,还有一种具有效率优势的替代方案。它只需要调用一次 jq,其输出将包括文件名信息(从 获取input_filename)。然后,该输出将成为辅助过程的输入,例如awk


推荐阅读