前提・実現したいこと
JSONからPSCustomObjectに変換したのですが、オブジェクト名が固定ではなく変わる場合のPSCustomObjectから値の取り出し方を教えてください。
「xn7/6ur.json」なので「$response.items.xn7/6ur.json」だとエラー
この記述が正しいのかわからないのですが「$response.items."xn7/6ur.json"」だと値を読み出しはできました。
$response.items xn7/6ur.json xn7/6ux.json ------------ ------------ {85443, 74864} {84372, 141732, 196516, 57980...}
$response.items | Get-Member TypeName: System.Management.Automation.PSCustomObject Name MemberType Definition ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() ToString Method string ToString() xn7/6ur.json NoteProperty Object[] xn7/6ur.json=System.Object[] xn7/6ux.json NoteProperty Object[] xn7/6ux.json=System.Object[]
該当のソースコード
powershell
1$response = Invoke-RestMethod -Uri 'https://api.cashless.go.jp/location/' -Method Get -Body @{ 'lat'=35.681236; 'lng'=139.76712499999996; 'limit'=30; 'd'=15000; 'q'=''; 'b'=''; 'c'=''; 'r'=''; 'p'='';} 2 3$response.items | Get-Member -MemberType Properties | Select-Object -ExpandProperty Name | ForEach-Object {$response.items.($_)} | ForEach-Object { (Invoke-RestMethod ('https://api.cashless.go.jp/location/' + $_))} | Export-Csv .\output.csv -NoTypeInformation -Append -Encoding UTF8
試したこと
Windows PowerShell でオブジェクトのプロパティ名を配列で取得する
https://mseeeen.msen.jp/powershell-enumerate-object-properties/
こちらの方法でプロジェクト名を取得して$response.items.($_)で参照して取り出すことはできています
書き方または他に方法があるか教えてほしい
powrshell
1$response.items | Get-Member -MemberType Properties | Select-Object -ExpandProperty Name | % {Write-Host $response.items.($_)}
補足情報(FW/ツールのバージョンなど)
Version : 5.1.18362.145
https://teratail.com/help/avoid-asking
> 問題・課題が含まれていない質問
> teratailは困っている人の質問を解決するサービスです。そのため、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。
> 何か困っている理由があり、最適解を見つける為の知見を得たい場合は、その理由や何が知りたいのかを明確に記述してください。
という意見が一人からありました。
回答1件
あなたの回答
tips
プレビュー