程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么在转换JSON时,Powershell在单行代码与两行代码中给出不同的结果?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么在转换JSON时,Powershell在单行代码与两行代码中给出不同的结果??

开发过程中遇到为什么在转换JSON时,Powershell在单行代码与两行代码中给出不同的结果?的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么在转换JSON时,Powershell在单行代码与两行代码中给出不同的结果?的解决方法建议,希望对你解决为什么在转换JSON时,Powershell在单行代码与两行代码中给出不同的结果?有所启发或帮助;

解决方案是用括号将前两个操作包装起来:

PS C:\> ($orig | ConvertFrom-JsON) | ConvertTo-JsON
[
    {
        "Type":  "1",
        "name":  "QA"
    },
    {
        "Type":  "2",
        "name":  "DEV"
    }
]

括号使您可以一次获取前两个操作的输出。没有它们,powershell将尝试分别解析其获取的任何对象。PSCustomObject从的结果集合$orig | ConvertFrom-JsON包含两个PSCustomObjects用于1 / QA和2 / DEV的对,因此通过管道传递该集合的输出,powershell尝试一次处理键/值对。

使用括号是对输出进行“分组”的一种较短方法,使您可以在不进行变量的情况下对其进行操作。

解决方法

总览

在powershell
3提示符下,我想调用RESTful服务,获取一些JSON,然后漂亮地打印它。我发现,如果将数据转换为powershell对象,然后再将powershell对象转换回json,则会得到一个漂亮的漂亮打印字符串。但是,如果我将这两个转换与一个管道组合成一个衬套,我将得到不同的结果。

TL; DR: 此:

PS> $psobj = $orig | ConvertFrom-JSON
PS> $psobj | ConvertTo-JSON

…给我的结果与此不同:

PS> $orig | ConvertFrom-JSON | ConvertTo-JSON

原始数据

[
  {
    "Type": "1","Name": "QA"
  },{
    "Type": "2","Name": "whatver"
  }
]

分两步进行转换

我将删除空白(因此适合一行…),将其转换为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"
    }
]

将两个步骤与管道结合

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

PS> $orig | ConvertFrom-JSON | ConvertTo-JSON
{
    "value":  [
                  {
                      "Type":  "1","Name":  "QA"
                  },{
                      "Type":  "2","Name":  "DEV"
                  }
              ],"Count":  2
}

注意添加了键“值”和“计数”。为什么有区别?我确定它与返回JSON对象而不是返回JSON数组的愿望有关,但是我不明白为什么我进行转换的方式会影响最终结果。

大佬总结

以上是大佬教程为你收集整理的为什么在转换JSON时,Powershell在单行代码与两行代码中给出不同的结果?全部内容,希望文章能够帮你解决为什么在转换JSON时,Powershell在单行代码与两行代码中给出不同的结果?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: