JSON

PowerShell 2.0将pscustomobject转换成Json字符串

字号+ 作者:H5之家 来源:H5之家 2017-09-09 15:00 我要评论( )

本来 ConvertTo-Json已经很方便了,可是目标操作系统可能是win7或着win 2k8,.NET framework的版本是2.0,PowerShell 的版本2.0,既没有ConvertTo-Json这条命令

PowerShell 2.0将pscustomobject转换成Json字符串

15 6月, 2015  在 Powershell小技巧  标签: JSON 来自 Mooser Lee

本文索引

[]

背景

某哥们用Odata写了一个Web服务作为服务端,客户端需要将PowerShell脚本在机器上扫描的结果以Json格式上传到服务端。

本来ConvertTo-Json已经很方便了,可是目标操作系统可能是win7或着win 2k8,.NET framework的版本是2.0,PowerShell 的版本2.0,既没有ConvertTo-Json这条命令,也没有直接可以调用的.NET内置的类库。

所以我就写了一个简易版的ConvertToJson函数,可以将pscustomobject或着hashtable对象转换成Json字符串,一般标准的Json字符串应当是有缩进的,这里我只负责上传数据格式的正确性,不负责美观,所以没有实现。

ConvertToJson脚本 # # Description: Convert custom object to json string # Author:Mosser Lee () # function ConvertToJson { param( $InputObject ) if( $InputObject -is [string]){ "`"{0}`"" -f $InputObject } elseif( $InputObject -is [bool]) { $InputObject.ToString().ToLower() } elseif( $InputObject-eq $null){ "null" } elseif( $InputObject -is [pscustomobject]) { $result = "$space{`n" $properties = $InputObject | Get-Member -MemberType NoteProperty | ForEach-Object { "`"{0}`": {1}" -f $_.Name, (ConvertToJson $InputObject.($_.Name)) } $result += $properties -join ",`n" $result += "$space`n}" $result } elseif( $InputObject -is [hashtable]) { $result = "{`n" $properties = $InputObject.Keys | ForEach-Object { "`"{0}`": {1}" -f $_, (ConvertToJson $InputObject[$_]) } $result += $properties -join ",`n" $result += "`n}" $result } elseif( $InputObject -is [array]) { $result = "[`n" $items = @() for ($i=0;$i -lt $InputObject.length;$i++) { $items += ConvertToJson $InputObject[$i] } $result += $items -join ",`n" $result += "`n]" $result } else{ $InputObject.ToString() } } 测试 整数,浮点 PS> ConvertToJson 2 2 PS> ConvertToJson 3.14 3.14 字符串 PS> ConvertToJson '2' "2" 布尔 PS> ConvertToJson $true true 哈希表 PS> ConvertToJson @{A=3;B=4} { "A": 3, "B": 4 } 数组 PS> ConvertToJson @('PStips.NET','PowerShell',3) [ "PStips.NET", "PowerShell", 3 ] 复合对象 $obj = [pscustomobject]@{ A = 3 B = '4' C = $false D = 20,'40',$true,@{ 网站类型="博客" 域名="www.pstips.net" 年龄=30 } } ConvertToJson $obj

输出:

{ "A": 3, "B": "4", "C": false, "D": [ 20, "40", true, { "网站类型": "博客", "域名": "www.pstips.net", "年龄": 30 } ] }

本文链接:
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

相关文章推荐:

  • Powershell使用JSON创建对象
  • Powershell展开对象数据结构
  • 关于 Mooser Lee

    我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

    参看所有文章 Mooser Lee

    发表评论

    文章导航
  • PowerShell隐藏Windows窗口
  • PowerShell将Windows store应用程序安装为开发者模式

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • js中将字符串转换成json的三种方式

      js中将字符串转换成json的三种方式

      2017-09-05 08:00

    • php怎么获取数据库转换成json数据乱码

      php怎么获取数据库转换成json数据乱码

      2017-08-28 09:00

    • Powershell展开对象数据结构并以JSON格式输出

      Powershell展开对象数据结构并以JSON格式输出

      2017-06-13 15:00

    • Python 将类的对象转换成 JSON 详解

      Python 将类的对象转换成 JSON 详解

      2017-02-25 15:03

    网友点评