Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell Json到CSV选择第二级列_Powershell - Fatal编程技术网

Powershell Json到CSV选择第二级列

Powershell Json到CSV选择第二级列,powershell,Powershell,我有以下格式的json,其中一些列位于第二级。我希望第二级的列在CSV中处于第一级 { "ApiKey": "123", "BasicDetails": { "ClientID": "1234", "CompanyName": "C1", "ContactName": "", "EmailAddress": "", "Country": "United Kingdom", "TimeZone": "(GMT+00:00)" }} 所需

我有以下格式的json,其中一些列位于第二级。我希望第二级的列在CSV中处于第一级

{
  "ApiKey": "123",
  "BasicDetails": {
    "ClientID": "1234",
    "CompanyName": "C1",
    "ContactName": "",
    "EmailAddress": "",
    "Country": "United Kingdom",
    "TimeZone": "(GMT+00:00)"
  }}
所需输出为:

APIKey, ClientID, CompanyName, ContactName, EmailAddress,Country,Timezone
123,1234,C1,,,United Kingdom,(GMT+00:00)
我试过:

(GET-Content F:/my.json -RAW | ConvertFrom-Json)|Select Columns|Export-CSV F:/my.csv
编辑 实际Json: {


我需要一个级别的Belling Detail列、Basic Details列和API键

这应该适用于深度为2的所有JSON文件(您要求的):


棘手的问题。这在很大程度上取决于你是在为你的具体案例寻找解决方案还是一种更普遍的方法

首先,按照马丁·布兰德尔的回答

除此之外,还有
转换为FlatObject


感谢您的回复。我有账单详细信息和基本详细信息。我已经编辑了我的问题,您能看一下json并建议我编辑了我的答案吗?它是通用的,应该适用于所有json文件。请尝试一下
    "ApiKey": "123",
      "BasicDetails": {
        "ClientID": "1234",
        "CompanyName": "C1",
        "ContactName": "",
        "EmailAddress": "",
        "Country": "United Kingdom",
        "TimeZone": "(GMT+00:00)"
      }
    "BillingDetails": {
    "CurrentTier": "0 - 500",
    "CurrentMonthlyRate": 9.0000,
    "MarkupPercentage": 0,
    "MonthlyScheme": "Basic",
    "Currency": "USD",
    "ClientPays": false
  }}
$tempObject = @{}

(GET-Content F:/my.json -RAW | convertfrom-json).PsObject.Properties | ForEach-Object {
    if ($_.TypeNameOfValue -eq 'System.Management.Automation.PSCustomObject')
    {
        $_.Value.PsObject.Properties | ForEach-Object {
            $tempObject  += @{$_.Name = $_.Value}
        }        
    }
    else
    {
        $tempObject  += @{$_.Name = $_.Value}
    }
} 
[PsCustomObject]$tempObject | Export-CSV F:/my.csv