json - ConvertFrom-JSON 到对象

标签 json powershell 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"
    }
  }
}

我想将参数及其值动态添加到一个漂亮的 pscustomobject 中(包含上述数据,看起来如下所示):

ParameterName      | Value
===========================
storageAccountName | sa01
virtualNetworkName | nvn01

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

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

$JsonParameters = ConvertFrom-Json -InputObject $content
$JsonParameters.parameters | Measure-Object

在写这篇文章时,我最终找到了一个符合我想要的解决方案,我将其发布在答案部分。请随意教导我并提高...

最佳答案

我会做一些不同的事情,跳过哈希表,并使用隐藏的 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

顺便说一句,转换您发布的 JSON 时遇到问题,我必须在两个值周围添加引号,例如 "value": "sa01"

关于json - ConvertFrom-JSON 到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42539666/

相关文章:

c# - 调用服务时出现 EndpointNotFoundException

azure - 仅将最新文件数据加载到 Azure SQL 数据仓库

javascript - 优化 ng-repeat 次数 |angularJS

json - 检查 Instagram 帐户是公共(public)帐户还是私有(private)帐户

c# - 如何以编程方式或使用命令行程序更新现有 CA 模板的有效期

Firebase - Microsoft SSO 返回 UPN 而不是 SMTP 电子邮件地址

javascript - 迭代没有数组的嵌套 JSON 文件

javascript - 在合并对象的键中创建值数组

powershell - 使 PowerShell 脚本在全局范围内运行 cmdlet

某些 JSON 文件出现 PowerShell FilterScript 错误