【问题标题】:how to convert array of string in json to array of strings in powershell?如何将json中的字符串数组转换为powershell中的字符串数组?
【发布时间】:2018-09-03 14:43:11
【问题描述】:

我有下面的json

{
  "abc": [
    { "def": [ "", "" ] },
    { "ghi": [ "", "" ] },
    { "xyz" : ["\\[dbo\\].\\[abc1\\]", "\\[dbo\\].\\[def1\\]"] }
  ]
}

我想读取这个 json 并使用下面的代码将 xyz 元素的字符串转换为 powershell 中的字符串数组,但它不起作用。

$json = Get-Content "path to json file" | Out-String
$json = $json | ConvertFrom-Json
GetArrayFromJson -json $json
$global:array
Function GetArrayFromJson(){

Param(
    $json       
)

$global:array= ''
     $global:array

    $global:array=  $json.abc.xyz
     $global:array
}

【问题讨论】:

  • “它不工作”是什么意思?你知道你必须创建一个函数之前你可以使用它,不是吗?
  • 是的,在这里我错误地将它写在函数上方..但是该函数可用..我的意思是说,如果我将变量声明为,我希望输出等于相同的不工作$global:array = "\[dbo\].\[abc1\]", "\[dbo\].\[def1\]"。收到了吗?
  • 简单来说,我想读取一个json的元素,它具有字符串数组,并在powershell中将其转换为字符串数组
  • 嗯......但如果你使用ConvertFrom-Json它已经是Powershell。你可以用$json.abc.xyz输出它
  • 对,就是这样。请阅读。问题是如果我将变量声明为 $global:array = "[dbo].[abc1]", "[dbo].[def1]",则此输出不是预期的并且等于情况。不应该吗?

标签: arrays json powershell powershell-3.0


【解决方案1】:

这不适合评论...假设我有一个像这样的 json 字符串:

$rawjson = @'
{
  "abc": [
    { "def": [ "", "" ] },
    { "ghi": [ "", "" ] },
    { "xyz" : ["\\[dbo\\].\\[abc1\\]", "\\[dbo\\].\\[def1\\]"] }
  ]
}
'@ 

然后我将它转换为这样的 Powershell 对象:

$json = ConvertFrom-Json -InputObject $rawjson

我可以像这样访问“xyz”属性:

$json.abc.xyz

当我使用单个参数块创建适当的函数时! ;-) 像这样:

Function GetArrayFromJson{
    Param(
        $json       
    )
    $json.abc.xyz
}
GetArrayFromJson $json

并运行它,我两次得到相同的输出:

\[dbo\].\[abc1\]
\[dbo\].\[def1\]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    相关资源
    最近更新 更多