当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在 PowerShell 中将 JSON 转换为 CSV?

作者:精品下载站 日期:2024-12-14 05:22:30 浏览:14 分类:玩电脑

如何在 PowerShell 中将 JSON 转换为 CSV?


今天,我有一个关于在 PowerShell 中将 JSON 转换为 CSV 的重要需求。有多种方法可以做到这一点。在本教程中,我将通过示例向您展示如何使用不同的方法在 PowerShell 中将 JSON 转换为 CSV

要在 PowerShell 中将 JSON 变量转换为 CSV,请首先使用 Get-Content 加载 JSON 数据,然后使用 ConvertFrom-Json 将其转换为 PowerShell 对象。然后,使用 Export-Csv 将数据导出到 CSV 文件。例如,如果您有一个 JSON 文件 data.json,则可以使用以下命令:

$jsonData = Get-Content -Path "C:\MyFolder\data.json" -Raw | ConvertFrom-Json
$jsonData | Export-Csv -Path "C:\MyFolder\data.csv" -NoTypeInformation

这将使用 JSON 数据创建一个 CSV 文件,以便于操作和分析。

在 PowerShell 中将 JSON 转换为 CSV

JSON(JavaScript 对象表示法)是一种流行的数据交换格式,尤其是在 Web 应用程序中。但是,有时,您可能需要将 JSON 数据转换为 CSV(逗号分隔值)格式,以便于分析或报告。

在 PowerShell 中将 JSON 变量转换为 CSV 的方法有多种,包括一些示例。

对于所有示例,我将采用以下示例。

让我们使用一个自定义 JSON 文件 data.json ,其中包含以下内容:

[
    {
        "Name": "John Doe",
        "Age": 30,
        "City": "New York"
    },
    {
        "Name": "Jane Smith",
        "Age": 25,
        "City": "Los Angeles"
    }
]

方法 1:使用 ConvertFrom-Json 和 Export-Csv 进行基本转换

现在,让我们看看如何使用 ConvertFrom-Json 和 Export-Csv 将 JSON 转换为 CSV 文件。

# Load JSON data
$jsonData = Get-Content -Path "C:\MyFolder\data.json" -Raw | ConvertFrom-Json

# Convert to CSV
$jsonData | Export-Csv -Path "C:\MyFolder\data.csv" -NoTypeInformation
  1. 加载 JSON 数据:首先,将 JSON 数据加载到 PowerShell 变量中。
  2. 将 JSON 转换为 PowerShell 对象:使用 ConvertFrom-Json cmdlet。
  3. 导出为 CSV:使用 Export-Csv cmdlet 以 CSV 格式保存数据。

执行上述 PowerShell 脚本后,它将创建一个包含以下内容的 CSV 文件 data.csv

"Name","Age","City"
"John Doe","30","New York"
"Jane Smith","25","Los Angeles"

我执行了上面的 PowerShell 脚本,您可以在下面的屏幕截图中看到输出:

[玩转系统] 如何在 PowerShell 中将 JSON 转换为 CSV?

查看如何在 PowerShell 中将字符串转换为 JSON?

方法 2:在 PowerShell 中将嵌套 JSON 转换为 CSV

嵌套 JSON 结构的转换可能会更复杂。在这种情况下,您可能需要先平整 JSON 数据,然后再将其转换为 CSV。

考虑以下嵌套 JSON 数据:

[
    {
        "Name": "John Doe",
        "Details": {
            "Age": 30,
            "City": "New York"
        }
    },
    {
        "Name": "Jane Smith",
        "Details": {
            "Age": 25,
            "City": "Los Angeles"
        }
    }
]

要处理此问题,您可以使用 Select-Object cmdlet 来展平结构:

# Load JSON data
$jsonData = Get-Content -Path "C:\MyFolder\nested_data.json" -Raw | ConvertFrom-Json

# Flatten and convert to CSV
$jsonData | Select-Object Name, @{Name='Age';Expression={$_.Details.Age}}, @{Name='City';Expression={$_.Details.City}} | Export-Csv -Path "C:\MyFolder\nested_data.csv" -NoTypeInformation

这将生成一个包含以下内容的 CSV 文件 nested_data.csv

"Name","Age","City"
"John Doe","30","New York"
"Jane Smith","25","Los Angeles"

这是下面屏幕截图中的输出:

[玩转系统] 如何在 PowerShell 中将 JSON 转换为 CSV?

查看如何在 PowerShell 中将 JSON 写入文件?

方法 3:使用自定义 PowerShell 函数

对于更复杂的场景,您可能需要创建自定义 PowerShell 函数来处理转换。如果您需要频繁执行转换或处理各种 JSON 结构,这尤其有用。

这是一个例子。

以下是将 JSON 转换为 CSV 的自定义函数:

function Convert-JsonToCsv {
    param (
        [string]$jsonPath,
        [string]$csvPath
    )

    # Load JSON data
    $jsonData = Get-Content -Path $jsonPath -Raw | ConvertFrom-Json

    # Check if JSON data is an array
    if ($jsonData -is [System.Collections.IEnumerable]) {
        # Flatten nested structures if needed
        $flattenedData = $jsonData | ForEach-Object {
            [PSCustomObject]@{
                Name = $_.Name
                Age = $_.Details.Age
                City = $_.Details.City
            }
        }

        # Export to CSV
        $flattenedData | Export-Csv -Path $csvPath -NoTypeInformation
    } else {
        Write-Error "JSON data is not an array."
    }
}

# Usage
Convert-JsonToCsv -jsonPath "C:\MyFolder\nested_data.json" -csvPath "C:\MyFolder\output.csv"

此函数获取 JSON 文件的路径以及要保存 CSV 文件的路径。它通过在导出到 CSV 之前展平嵌套结构来处理嵌套结构。

结论

在本教程中,我解释了如何使用 ConvertFrom-Json 和 Export-Csv 在 PowerShell 中将 JSON 转换为 CSV。另外,我还解释了如何在 PowerShell 中将嵌套 json 转换为 CSV。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯