作者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://webptt.com/cn.aspx?n=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
1F:推 aiweisen: 这个格式有垃圾 key值正常都是固定的 把变数当key值04/28 19:47
2F:→ aiweisen: 根本就搞人吧 常见的应该要是 "id":"1",才对04/28 19:48
3F:→ 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