首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ConvertTo-Json将字符串转换为整数?

如何使用ConvertTo-Json将字符串转换为整数?
EN

Stack Overflow用户
提问于 2013-07-15 07:24:15
回答 1查看 2.1K关注 0票数 2

我正在使用PowerShell将CSV文件转换为JSON格式。问题是CSV会用双引号将列值括起来,甚至是整数。如何在转换过程中将它们转换为整数?

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

代码语言:javascript
复制
Get-ChildItem .\*.csv | Foreach-Object {
  $basename = $_.BaseName
  import-csv $_ | ConvertTo-Json -Compress | Foreach {$_ -creplace '"NULL"','null'} | Out-File ".\$basename.json"
}

这是我的源CSV:

代码语言:javascript
复制
"Id","Name","Active"
"1","Test 1","1"
"2","Test 2","0"
"3","Test 3","1"

下面是它的输出:

代码语言:javascript
复制
[
{"Id":"1","Name":"Test 1","Active":"1"}
{"Id":"2","Name":"Test 2","Active":"0"}
{"Id":"3","Name":"Test 3","Active":"1"}
]

我如何让它输出以下内容?:

代码语言:javascript
复制
[
{"Id":1,"Name":"Test 1","Active":1}
{"Id":2,"Name":"Test 2","Active":0}
{"Id":3,"Name":"Test 3","Active":1}
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-15 10:59:08

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

代码语言:javascript
复制
import-csv $_ | ConvertTo-Json -Compress | 
    Foreach {$_ -creplace '"NULL"','null' -replace ':"([0-9]+)"',':$1'} | 
        Out-File ".\$basename.json"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17644796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档