Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ConvertToJSON将字符串转换为整数?_Json_Powershell_Csv_Powershell 3.0 - Fatal编程技术网

如何使用ConvertToJSON将字符串转换为整数?

如何使用ConvertToJSON将字符串转换为整数?,json,powershell,csv,powershell-3.0,Json,Powershell,Csv,Powershell 3.0,我正在使用PowerShell将CSV文件转换为JSON格式。问题是CSV在列值(甚至整数)周围使用双引号。在转换过程中如何将它们转换为整数 这是我用来将*.csv文件目录转换为*.json的脚本: Get-ChildItem .\*.csv | Foreach-Object { $basename = $_.BaseName import-csv $_ | ConvertTo-Json -Compress | Foreach {$_ -creplace '"NULL"','null'}

我正在使用PowerShell将CSV文件转换为JSON格式。问题是CSV在列值(甚至整数)周围使用双引号。在转换过程中如何将它们转换为整数

这是我用来将*.csv文件目录转换为*.json的脚本:

Get-ChildItem .\*.csv | Foreach-Object {
  $basename = $_.BaseName
  import-csv $_ | ConvertTo-Json -Compress | Foreach {$_ -creplace '"NULL"','null'} | Out-File ".\$basename.json"
}
这是我的源CSV:

"Id","Name","Active"
"1","Test 1","1"
"2","Test 2","0"
"3","Test 3","1"
以下是它的输出:

[
{"Id":"1","Name":"Test 1","Active":"1"}
{"Id":"2","Name":"Test 2","Active":"0"}
{"Id":"3","Name":"Test 3","Active":"1"}
]
我如何使其输出此内容

[
{"Id":1,"Name":"Test 1","Active":1}
{"Id":2,"Name":"Test 2","Active":0}
{"Id":3,"Name":"Test 3","Active":1}
]

发生这种情况的原因是,Import Csv为每一列创建了一个带有字符串属性的对象,因此ConvertTo Json为您提供带引号的字符串。您可以在导入Csv转换为Json之间使用选择对象将数字属性重新转换为整数,但我认为最简单的方法是在foreach块中添加正则表达式替换:

import-csv $_ | ConvertTo-Json -Compress | 
    Foreach {$_ -creplace '"NULL"','null' -replace ':"([0-9]+)"',':$1'} | 
        Out-File ".\$basename.json"