2016-12-22 3 views
2

私は以下の形式のjsonを持っています。ここでいくつかの列は第2レベルにあります。私はCSVでの最初のレベルに第二レベルの列にしたいJson to CSVは第2レベルの列を選択します

{ 
    "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 

EDIT 実際の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 
    }} 

私はこれは(あなたが要求した)2の深さと、すべてのJSONファイルのために働く必要がありベリング詳細列、1つのレベル

答えて

1

での基本的な詳細]列とAPIキーが必要になります。

$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 
+0

応答のためのおかげで。私は基本的な詳細と請求の詳細を持っています。私は私の質問を編集しました、あなたはjsonを見て、 – Mohit

+0

私は私の答えを編集提案することができます。一般的なので、すべてのJSONファイルで動作するはずです。試してみる –

関連する問題