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

标签 arrays json powershell

也许这是一个简单的问题,将被禁止,但是我今天花了几个小时,却没有按预期工作。
所以我有这样的对象:

data_1 data_2 ... abra_12 ...

我想像这样将其转换为json:
[
    {"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

但是我得到这个:
{
   "Value":  "data_1"
},
{
   "Value":  "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")
]
"@

关于arrays - 将一维字符串数组转换为json文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47746198/

相关文章:

android - Android - Ruby on Rails - MySQL

powershell - 如何在exchange 2010数据库中获取邮箱大小

java - 检查回文字符串

iphone - 保存用户默认值时出现随机 BAD ACCESS

jquery - Rails,发送 json 参数

javascript - 在 Javascript 中将字符串转换为二维数组

powershell - 有没有更好的方法来声明多个参数集?

arrays - 如何使用 Powershell 简化多维数组?

数组作为 Swift 字典中的值 : Cannot append values

javascript - 放置(保存)json数据