ConvertFrom-JSON到object

wot*_*324 2 powershell json azure

它看起来像我期待这种方式工作的方式不是.我想要返回多个对象,但它似乎只返回一个.我不知道如何做到这一点.

一个非常简单的JSON文件:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "value": "sa01"
    },
    "virtualNetworkName": {
      "value": "nvn01"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想动态地将参数及其值添加到一个漂亮的pscustomobject中(对于上面的数据看起来如下):

ParameterName      | Value
===========================
storageAccountName | sa01
virtualNetworkName | nvn01
Run Code Online (Sandbox Code Playgroud)

我不明白为什么以下返回一个对象:

$TemplateParametersFile = "C:\Temp\deploy-Project-Platform.parameters.json"
$content = Get-Content $TemplateParametersFile -Raw

$JsonParameters = ConvertFrom-Json -InputObject $content
$JsonParameters.parameters | Measure-Object
Run Code Online (Sandbox Code Playgroud)

在写这篇文章的同时,我最终找到了一个能够得到我想要的解决方案,我将在答案部分发布.随意上学,改进......

The*_*ian 6

我会做一些不同的事情,跳过哈希表,并使用隐藏PSObject属性.所以,在你存储JSON数据后拿起$content,我会做这样的事情:

#Convert JSON file to an object
$JsonParameters = ConvertFrom-Json -InputObject $content

#Create new PSObject with no properties
$oData = New-Object PSObject

#Loop through properties of the $JsonParameters.parameters object, and add them to the new blank object
$JsonParameters.parameters.psobject.Properties.Name | 
    ForEach{ 
        Add-Member -InputObject $oData -NotePropertyName $_ -NotePropertyValue $JsonParameters.parameters.$_.Value 
    }

$oData
Run Code Online (Sandbox Code Playgroud)

顺便说一句,它有转换你发布的JSON的问题,我不得不在两个值周围添加引号,例如"value": "sa01".