如何用PowerShell将CSV转JSON时避免长数字转为科学计数法?
解决CSV转JSON时长数字转为科学计数法的问题
问题原因
Import-Csv读取CSV文件时所有字段默认都是字符串类型,但ConvertTo-Json会自动识别格式类似数值的内容,将长数字转换为数值类型,最终输出为科学计数法格式。要避免这个问题,需要强制让长数字字段以字符串形式保留,阻止自动类型转换。
解决方案
通过显式将长数字字段转换为字符串类型,让ConvertTo-Json将其处理为JSON字符串值,而非数值。以下是两种可行的修改方式:
方式一:使用计算属性直接转换
Import-Csv -Path "F:\DATA_002.csv" -UseCulture | Select-Object Name, @{Label = 'Mobile'; Expression = { [string]$_.Mobile }}, @{Label = 'Other mobile no.'; Expression = { [string]$_.'Other mobile no.' }} | ConvertTo-Json | Add-Content -Path "F:\DATA_002.json"
方式二:先修改对象属性类型再转换
# 导入CSV数据 $csvData = Import-Csv -Path "F:\DATA_002.csv" -UseCulture # 遍历数据,将长数字字段强制转为字符串 foreach ($item in $csvData) { $item.Mobile = [string]$item.Mobile $item.'Other mobile no.' = [string]$item.'Other mobile no.' } # 转换为JSON并保存 $csvData | Select-Object Name, Mobile, 'Other mobile no.' | ConvertTo-Json | Add-Content -Path "F:\DATA_002.json"
说明
两种方式的核心都是确保长数字字段在传递给ConvertTo-Json时是字符串类型,这样JSON输出中该字段会被双引号包裹,完全保留原始数字格式,不会出现科学计数法。
内容的提问来源于stack exchange,提问作者sridharnetha
相关产品推荐
相关产品推荐

