json - powershell json打印父母和孩子
问题描述
鉴于:
$j = '{"name": "fred", "age":23, "children": [{"name": "sue", "age": 2},{"name": "Sally", "age": 3}]}'
我可以做这个:
> $f = ConvertFrom-Json -InputObject $j
> $f.children
name age
---- ---
sue 2
Sally 3
我想要的是输出
> $f. #what goes here?
name child age
---- ---
fred sue 2
fred Sally 3
我该怎么做?
更新,试过这个:
> $child = @{label="child";expression={$_.children.name}}
> $age = @{label="age";expression={$_.children.age}}
> $f | select name, $child, $age
得到
name child age
---- ----- ---
fred {sue, Sally} {2, 3}
不完全是我要找的。(我想要两行,每行一个孩子和父母的名字)
解决方案
你的尝试很接近。我建议在密钥下迭代孩子:
foreach ($child in $f.children) {
$f | Select-Object -Property @(
'name'
@{L='child'; E={ $child.name }}
@{L='age'; E={ $child.age }}
)
}
没有循环的另一种方法:
$name = $f.name
$f.children | Select-Object -Property @(
@{L='name'; E={ $name }}
@{L='child'; E={ $_.name }}
'age'
)
最后,完全是另一种方法(基于这两种方法):
$name = $f.name
foreach ($child in $f.children) {
[pscustomobject]@{
name = $name
child = $child.name
age = $child.age
}
}
推荐阅读
- sql-server - 尝试使用参数和多个连接创建存储过程
- mongodb - MongoDB - 来自两个集合的猫鼬数据
- python - 如何在 discord.py 中制作 akinator 命令?
- python - Spyder修改模板template.py日期格式
- python - Selenium 错误 - 它没有输入我的名字
- c - 在linux中使用makefile生成可执行文件
- webpack - WebPack Dev Server 在更改我的 SCSS 时不会实时重新加载我的第二个 HTML 页面,但在更改我的 HTML 或 JS 文件时会实时重新加载
- javascript - 获取属性或使用 Puppeteer
- scala - Scala单元测试检查布尔值转换
- javascript - 非常简单的 HTML/JavaScript 按钮不起作用