作者RedFox (紅狐)
看板ask
標題[請問] 用PowerShell讀取json的資料
時間Fri Apr 28 16:12:27 2023
我是個初學PowerShell的新手
想用PowerShell讀取一份json數據,json的結構類似這樣:
{
"1": {
"class": "Data",
"source": "RGYU2",
"detail": {
"Type": "AAA",
"Height": 50,
"saveID": 1
}
},
"3": {
"class": "Data",
"source": "RGYU7",
"detail": {
"Type": "VVV",
"Height": 75,
"saveID": 3
}
},
"7": {
"class": "Data",
"source": "RGTY1",
"detail": {
"Type": "FFF",
"Height": 20,
"saveID": 7
}
}
}
因為每筆資料的編號都不同,我不知道該怎麼索引
目前我摸索出的方法,要先將編號先列出,再依序填入路徑去讀取資料
類似這樣:
($json | Get-Member).name | ForEach-object {$json.$_.detail.Height}
雖然可行,但要先抓出編號,感覺多拐了一段路
有沒有更簡便的辦法,不用知道編號,就能直接索引到各筆資料去讀取?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.140.2 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/ask/M.1682669549.A.ADC.html
推
loadingN: ConvertFrom-Json 04/28 18:10
有 json讀取後就用這指令轉換了,才開始下手處理資料
※ 編輯: RedFox (180.217.140.2 臺灣), 04/28/2023 19:07:08
推 aiweisen: 這個格式有垃圾 key值正常都是固定的 把變數當key值04/28 19:47
→ aiweisen: 根本就搞人吧 常見的應該要是 "id":"1",才對04/28 19:48
→ aiweisen: 又或者是像你detail一樣 外面固定key值 把編號放裡面04/28 19:50
這結構真的醜
有固定key值,就好直接指定資料路徑了
現在我的方法要遍歷2次,才想問說有沒有只要遍歷1次就好的更簡單方法
推
Schottky: 同意一樓 04/28 20:38
我是有用ConvertFrom-Json了啊,想說這是處理json的基礎步驟就沒提了
問題在於轉換成object後,能否在不知道key值的情況下去抓各筆資料
※ 編輯: RedFox (180.217.140.2 臺灣), 04/28/2023 22:06:18
找到可用語法了,自答
$json.psobject.properties.name 可直接知道編號
$json.psobject.properties.value 後面加key,就能直接索引到資料的值了
※ 編輯: RedFox (180.217.140.2 臺灣), 04/30/2023 15:47:01