相关疑难解决方法(0)

为什么在转换JSON时,powershell在单行中给出的结果不同于双行?

概观

从powershell 3提示符,我想调用一个RESTful服务,获得一些JSON,并打印它.我发现如果我将数据转换为powershell对象,然后将powershell对象转换回json,我会得到一个漂亮的漂亮打印字符串.但是,如果我将两个转换组合成一个带管道的单线程,我会得到不同的结果.

TL; DR:这个:

PS> $psobj = $orig | ConvertFrom-JSON
PS> $psobj | ConvertTo-JSON
Run Code Online (Sandbox Code Playgroud)

......给我的结果与此不同:

PS> $orig | ConvertFrom-JSON | ConvertTo-JSON
Run Code Online (Sandbox Code Playgroud)

原始数据

[
  {
    "Type": "1",
    "Name": "QA"
  },
  {
    "Type": "2",
    "Name": "whatver"
  }
]
Run Code Online (Sandbox Code Playgroud)

分两步完成转换

我将删除空格(因此它适合一行...),将其转换为powershell对象,然后将其转换回JSON.这很好用,并返回正确的数据:

PS> $orig = '[{"Type": "1","Name": "QA"},{"Type": "2","Name": "DEV"}]'
PS> $psobj = $orig | ConvertFrom-JSON
PS> $psobj | ConvertTo-JSON
[
    {
        "Type":  "1",
        "Name":  "QA"
    },
    {
        "Type":  "2",
        "Name":  "DEV"
    }
]
Run Code Online (Sandbox Code Playgroud)

将这两个步骤与管道结合起来

但是,如果我将最后两个语句组合成一个单行,我会得到不同的结果:

PS> $orig | ConvertFrom-JSON | ConvertTo-JSON …
Run Code Online (Sandbox Code Playgroud)

powershell json

10
推荐指数
2
解决办法
3222
查看次数

标签 统计

json ×1

powershell ×1