PowerShell中将SQLite查询结果转JSON导出文件出现特殊字符问题
问题原因及解决方法
你的问题出在对已经序列化好的JSON字符串再次调用了ConvertTo-Json:
$DbDataJson已经是通过ConvertTo-Json生成的合法JSON字符串,你再次将它传入ConvertTo-Json,PowerShell会把这个字符串当作普通文本重新序列化,导致双引号被转义成",同时换行符也被额外转义。
正确的导出方式
方式1:直接写入已生成的JSON变量
既然$DbDataJson已经是正确的JSON内容,直接用Out-File或者Set-Content写入即可,不需要再次转换:
$DbDataJson | Out-File $myJsonFile -Encoding utf8 # 或者用Set-Content,更适合文本文件场景 $DbDataJson | Set-Content $myJsonFile -Encoding utf8
方式2:一步完成转换+写入(推荐)
跳过中间变量,直接将处理后的DataTable转换成JSON并写入文件,避免二次处理的风险:
$DbDataTable | Select-Object * -ExcludeProperty RowError, RowState, Table, ItemArray, HasErrors | ConvertTo-Json -Depth 100 -EscapeHandling Default | Out-File $myJsonFile -Encoding utf8
补充说明
- 加上
-Encoding utf8参数可以确保生成的JSON文件是UTF-8编码,避免不同环境下的乱码问题; Test-Json验证通过的$DbDataJson本身是正确的,只是后续的二次转换破坏了它的结构。
内容的提问来源于stack exchange,提问作者Tribun
相关产品推荐
相关产品推荐

