首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法使用powershell更新json文件

无法使用powershell更新json文件
EN

Stack Overflow用户
提问于 2018-06-01 22:10:55
回答 1查看 63关注 0票数 2

我正在尝试使用新值更新下面的json文件,并将该文件保存到新路径中。但是不能得到想要的结果,我在$updatedfilepath中的新文件将与$jsonfilepath中的文件相同

我已经尝试过Set-Content的powershell cmd-let,但没有成功。所以,请有人能在这方面帮助我,指导我的代码哪里出了问题。

My code:

代码语言:javascript
复制
$JsonData = Get-Content $JsonFilePath -Raw | ConvertFrom-Json
$JsonData | Where { $JsonData.modules.name -eq "qact" } | % { $JsonData.modules.load.local -replace ("qa/styles/act.css", "qa/styles/act.2.css") -replace ("qa/js/act.2.js", "qa/js/act.2.js") }
$JsonData | ConvertTo-Json -Depth 4 |  % { $_ -replace "        ","  " } | Tee-Object $updatedJsonFilePath

我的文件:

代码语言:javascript
复制
{
  "depends": "bento/1.13.0",
  "paths": [
    {
      "patterns": [ "/act/home/?.*" ],
      "use": "qact"
    },
    {
      "patterns": [ "/act/WS/home/?.*" ],
      "use": "qaws"
    }
  ],
  "modules": [
    {
      "name": "qact",
      "earlyLoad": true,
      "load": {
        "local": [  "qa/styles/act.css",
          "qa/js/act.dependencies.js",
          "qa/js/act.wijmo.xlxs.workbook.js",
          "qa/js/act.signalr.js",
          "qa/js/act.js"
        ]
      }
    },
    {
      "name": "qaws",
      "earlyLoad": true,
      "load": {
        "local": [
          "ws/styles/act.css",
          "ws/js/act.dependencies.js",
          "ws/js/act.wijmo.xlxs.workbook.js",
          "ws/js/act.signalr.js",
          "ws/js/act.js"
        ]
      }
    }
  ]
}

从上面的代码我的输出:

代码语言:javascript
复制
qa/styles/oct.2.css
qa/js/oct.dependencies.js
qa/js/oct.wijmo.xlxs.workbook.js
qa/js/oct.signalr.js
qa/js/oct.2.js
{
  "depends": "bento/1.13.0",
  "paths": [
    {
      "patterns": [ "/act/home/?.*" ],
      "use": "qact"
    },
    {
      "patterns": [ "/act/WS/home/?.*" ],
      "use": "qaws"
    }
  ],
  "modules": [
    {
      "name": "qact",
      "earlyLoad": true,
      "load": {
        "local": [  "qa/styles/act.css",
          "qa/js/act.dependencies.js",
          "qa/js/act.wijmo.xlxs.workbook.js",
          "qa/js/act.signalr.js",
          "qa/js/act.js"
        ]
      }
    },
    {
      "name": "qaws",
      "earlyLoad": true,
      "load": {
        "local": [
          "ws/styles/act.css",
          "ws/js/act.dependencies.js",
          "ws/js/act.wijmo.xlxs.workbook.js",
          "ws/js/act.signalr.js",
          "ws/js/act.js"
        ]
      }
    }
  ]
}

我想要的结果:

代码语言:javascript
复制
{
  "depends": "bento/1.13.0",
  "paths": [
    {
      "patterns": [ "/act/home/?.*" ],
      "use": "qact"
    },
    {
      "patterns": [ "/act/WS/home/?.*" ],
      "use": "qaws"
    }
  ],
  "modules": [
    {
      "name": "qact",
      "earlyLoad": true,
      "load": {
        "local": [  "qa/styles/act.2.css",
          "qa/js/act.dependencies.js",
          "qa/js/act.wijmo.xlxs.workbook.js",
          "qa/js/act.signalr.js",
          "qa/js/act.2.js"
        ]
      }
    },
    {
      "name": "qaws",
      "earlyLoad": true,
      "load": {
        "local": [
          "ws/styles/act.css",
          "ws/js/act.dependencies.js",
          "ws/js/act.wijmo.xlxs.workbook.js",
          "ws/js/act.signalr.js",
          "ws/js/act.js"
        ]
      }
    }
  ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 05:47:14

我想通过一个简单的字符串替换就可以了。

代码语言:javascript
复制
$jsonFilePath = "c:\folder\input.json"         #replace with path to your input file
$updatedJsonFilePath = "c:\folder\output.json" #replace with path to your output file

$jsonData = Get-Content $jsonFilePath 
$jsonData -ireplace ("styles/act.css", "styles/act.2.css") -ireplace ("js/act.js", "js/act.2.js") | Out-File $updatedJsonFilePath
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50645343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档