json - 在Powershell中从JSON转换为CSV

标签 json powershell csv scripting

这是我的csv:

"name,data
Play,http://{gho}.domain.com/
BDomain,domain.com
Charts,2
Compress,0
CompressJ,0" | ConvertFrom-Csv | ConvertTo-Json
给我:
[
{
    "name":  "Play",
    "data":  "http://{gho}.domain.com/"
},
{
    "name":  "BDomain",
    "data":  "domain.com"
},
{
    "name":  "Charts",
    "data":  "2"
},
{
    "name":  "Compress",
    "data":  "0"
},
{
    "name":  "CompressJ",
    "data":  "0"
}
]
现在,我想从json中获取该csv,但是|的链ConvertFrom-Json | ConvertTo-CSV无法正常工作,我很好奇为什么不呢?

最佳答案

为了使Steven's helpful answer具有简洁的摘要和跨版本的观点,请执行以下操作:

  • PowerShell [Core] v7 + 中,不需要额外的工作:将| ConvertFrom-Json | ConvertTo-Csv附加到您的代码中可以按原样进行。
  • Windows PowerShell和PowerShell [Core] v6.x 中,您需要强制枚举ConvertFrom-Json的输出以使ConvertTo-Csv正常工作,因为与PowerShell的通常行为相反,ConvertFrom-Json会作为一个整体输出JSON数组管道的单个对象。
  • 事实是这种行为很不正常,这促使v7 +进行了更改-有关背景信息,请参见this answer
  • 强制枚举的最简单方法-即将输出为一个整体的数组/集合的元素一一发送到管道,是使用(...),即grouping operator

  • # Works in all PowerShell versions, but in v7+ the (...) is no longer necessary.
    (
    "name,data
    Play,http://{gho}.domain.com/
    BDomain,domain.com
    Charts,2
    Compress,0
    CompressJ,0" | ConvertFrom-Csv | ConvertTo-Json |
      ConvertFrom-Json
    ) | ConvertTo-Csv -NoTypeInformation
    
    这样产生:
    "name","data"
    "Play","http://{gho}.domain.com/"
    "BDomain","domain.com"
    "Charts","2"
    "Compress","0"
    "CompressJ","0"
    

    关于json - 在Powershell中从JSON转换为CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64014087/

    相关文章:

    powershell - 为什么自动化框架需要为每个 powershell cmdlet 提供代理功能?

    javascript - 尝试使用 Jest 和 Enzyme 对 React 组件进行单元测试

    rest - 使用 Rest API 获取 Azure DevOps 构建的构建结果

    powershell - 按顺序运行多个 Powershell 脚本 - 在文件夹上 - 将脚本组合成主脚本

    mysql - 如何在 MySQL INTO OUTFILE 命令中设置日期时间格式?

    python - 使用 Python 在 Pandas 中读取 CSV 文件时出现 UnicodeDecodeError

    javascript - 如何测试对象是否存在于 Javascript 数组中?

    c# - 为什么我的 C# 应用程序在此 REST 请求上会失败,但通过浏览器可以正常运行?

    ruby-on-rails - 在另一个中包含另一个 jbuilder 模板

    javascript - 嵌套 JSON 到 CSV 格式 Node.js