用jq替换多个JSON对象的所有值

用jq替换多个JSON对象的所有值,json,foreach,key-value,jq,map-function,Json,Foreach,Key Value,Jq,Map Function,我正在尝试使用*(星号字符)替换JSON对象的所有值 这是我的package.json文件: { "name": "project", "version": "0.0.1", "description": "project-desc", "main": "gulpfile.js", "directories": { "test": "tests" }, "dependencies": { "babel-polyfill": "^6.7.4",

我正在尝试使用
*
(星号字符)替换JSON对象的所有值

这是我的package.json文件:

{
  "name": "project",
  "version": "0.0.1",
  "description": "project-desc",
  "main": "gulpfile.js",
  "directories": {
    "test": "tests"
  },
  "dependencies": {
    "babel-polyfill": "^6.7.4",
    "babel-preset-es2015": "^6.6.0",
    "babel-preset-react": "^6.5.0",
    "gulp-clean": "^0.3.2",
    "jquery": "^2.1.4",
    "lodash": "^4.0.0",
    "moment": "^2.13.0",
    "moment-timezone": "^0.5.0",
    "radium": "^0.16.2",
    "react": "^15.1.0",
    "react-bootstrap-sweetalert": "^1.1.10",
    "react-dom": "^15.1.0",
    "react-timeago": "^2.2.1",
    "sprintf": "^0.1.5",
    "smoothscroll": "~0.2.2"
  },
  "devDependencies": {
    "babel": "^6.3.26",
    "babelify": "^7.2.0",
    "browserify": "^12.0.1",
    "console-stamp": "^0.2.0",
    "estraverse-fb": "^1.3.1",
    "gulp": "^3.9.0",
    "gulp-concat": "^2.6.0",
    "gulp-sass": "^2.1.1",
    "gulp-sourcemaps": "^1.6.0",
    "gulp-util": "^3.0.7",
    "lodash": "^4.5.1",
    "lodash.assign": "^3.2.0",
    "lodash.isfunction": "^3.0.8",
    "lodash.reduce": "^4.3.0",
    "node-sass": "^3.4.2",
    "react-bootstrap": "^0.29.4",
    "react-intl": "^2.1.0",
    "reactify": "^1.1.1",
    "sweetalert": "^1.1.3",
    "vinyl": "^1.1.0",
    "vinyl-buffer": "^1.0.0",
    "vinyl-source-stream": "^1.1.0",
    "watchify": "^3.4.0",
    "jsx-to-string": "~0.2.11"
  },
  "optionalDependencies": {
    "pkg-save": "~1.0.2"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "mygiturl"
  },
  "author": "authorname",
  "license": "MIT"
}
我想用星号替换
依赖项
devdependency
可选依赖项
对象的所有值,如下所示(以下简称示例):

这是我正在使用的过滤器:
.dependencies、.devDependencies、.optionalDependencies |.foreach.[]作为$item([];$item=“*”)

在命令行中传递为:
cat package.json | jq'.dependencies、.devDependencies、.optionaldpendencies |.foreach.[]作为$item([];$item=“*”)”

但它返回了一个错误,而不是期望的结果:

error: syntax error, unexpected '[', expecting IDENT
.dependencies, .devDependencies, .optionalDependencies | .foreach .[] as $item ([]; $item = "*")
                                                                   ^
1 compile error
不仅仅是一个语法错误,我确信它只是操纵顶级项,而不是对象中的每个键值对,这正是我想要做的

参考资料和相关问题:


    • 完成任务最直接的方法可能是使用以下过滤器:

      
      .dependencies |=映射值(“*”)
      |.devDependencies |=映射值(“*”)
      |.optionalDependencies |=映射值(“*”)
      

      为避免重复:

      
      (.dependencies、.devDependencies、.optionalDependencies)|=映射值(“*”)
      

      完成任务最直接的方法可能是使用以下过滤器:

      
      .dependencies |=映射值(“*”)
      |.devDependencies |=映射值(“*”)
      |.optionalDependencies |=映射值(“*”)
      

      为避免重复:

      
      (.dependencies、.devDependencies、.optionalDependencies)|=映射值(“*”)
      

      利用逗号运算符,您可以一次性更新所有内容。要将所有值更新为
      “*”
      ,可以执行以下操作:

      .["dependencies", "devDependencies", "optionalDependencies"] |= map_values("*")
      

      您可以利用逗号运算符一下子更新所有内容。要将所有值更新为
      “*”
      ,可以执行以下操作:

      .["dependencies", "devDependencies", "optionalDependencies"] |= map_values("*")