Arrays 将一维字符串数组转换为json文件

Arrays 将一维字符串数组转换为json文件,arrays,json,powershell,Arrays,Json,Powershell,也许这是一个简单的问题,将会被禁止,但我今天花了几个小时,并没有让它像我预期的那样工作。 所以我有这样的目标: data_1 data_2 ... abra_12 ... 我希望将其转换为json,如下所示: [ {"data_1" : "data_1"}, {"data_2" : "data_2"}, ... ] { "data_1": "data_1" }, { "data_2": "data_2" }, 我试过这个: $result = Get

也许这是一个简单的问题,将会被禁止,但我今天花了几个小时,并没有让它像我预期的那样工作。 所以我有这样的目标:

data_1 data_2 ... abra_12 ...
我希望将其转换为json,如下所示:

[
    {"data_1" : "data_1"},
    {"data_2" : "data_2"},
    ...
]
{
   "data_1":  "data_1"
},
{
   "data_2":  "data_2"
},
我试过这个:

$result = Get-ChildItem $Path2Search -recurse | Select-String -Pattern '(?<=locI(.*)\(\").+?(?=\")' -casesensitive | foreach {$_.matches} | select value | ConvertTo-Json | Out-File $save2file
虽然我希望它是这样的:

[
    {"data_1" : "data_1"},
    {"data_2" : "data_2"},
    ...
]
{
   "data_1":  "data_1"
},
{
   "data_2":  "data_2"
},

有什么建议吗?:)

您可以首先在键值列表中塑造结果,然后将其转换为json

例如,如果输入是逗号分隔的字符串,则可以使用:

$input = "data_1, data_2, data_3"
$input.Split(',').Trim() | 
    ForEach-Object {@{$_=$_}} | 
        ConvertTo-Json | 
             Out-File "C:\test.txt"
或者,如果输入是字符串数组:

$input = @("data_1", "data_2", "data_3")
$input | ForEach-Object {@{$_=$_}} | 
        ConvertTo-Json |
            Out-File "C:\test.txt"
结果是:

[
    {
        "data_1":  "data_1"
    },
    {
        "data_2":  "data_2"
    },
    {
        "data_3":  "data_3"
    }
]
虽然我更喜欢使用上述解决方案来创建json结果,但您也可以依赖字符串操作:

$input = "data_1, data_2, data_3"
@"
[ 
`t$(($input -split '\s*,\s*' |%{"{ `"$_`" : `"$_`" }"}) -join ",`n`t")
]
"@

谢谢,但在我的例子中,它们不是逗号分隔的,正是这行代码的数据馈送:$result=Get ChildItem$Path2Search-recurse | Select String-Pattern'(?只需放置数组而不是
$input.Split(',').Trim()
just put而不是not work,drop error:ConvertTo Json:字典的序列化或反序列化不支持类型'System.Collections.Hashtable'。键必须是Strings。我让它这样工作:…foreach{$\.matches}| foreach对象-begin{$result=“{”}-进程{$result=$result+$$\$.Value+:“+$$\.Value+”,“}-end{$result=$result+“}”}$result | Out File$output但看起来不太好:/它与我与您共享的代码有什么关系?!