使用PowerShell忽略科学表示法将CSV文件转换为JSON文件



我有包含长数字的.csv文件。我使用以下PowerShell脚本从.csv文件转换为.json。但长数字作为科学符号正在发挥重要作用。

如何在不转换为科学符号的情况下强制将长数字从csv导入json?

这是我的PowerShell脚本

import-csv -path "F:DATA_002.csv" -UseCulture | select "Name", "Mobile", "Other mobile no." | ConvertTo-Json | Add-Content -Path "F:DATA_002.json"

正如mclayton在评论中敏锐地指出的那样,你可能无法找回原始数字,但如果你只想摆脱科学记数法,你可以尝试以下任一方法:

Import-Csv "F:DATA_002.csv" -UseCulture | 
ForEach-Object { $_."Other mobile no." = $_."Other mobile no." -as [long]; $_ } | 
ConvertTo-Json | Add-Content -Path "F:DATA_002.json"
Import-Csv "F:DATA_002.csv" -UseCulture | 
Select-Object Name, Mobile, @{n = 'Other'; e = { $_."Other mobile no." -as [long] } } | 
ConvertTo-Json | Add-Content -Path "F:DATA_002.json"

两者都使用-as运算符将科学表示法文本转换为长对象类型。

使用-as运算符时要特别注意。如果转换失败,它将以静默方式进行转换,并且输出将为null。如果您希望它通过通知失败,请尝试将值强制转换为long,而不是使用-as

[long]$_."Other mobile no."

最新更新