我在名为test.txt的文件中有这个JSON
{
"local-dev": {
"client": {
"server-url": "http://localhost:3000"
},
"server": {
"renterEndpoint": {
"rejectUnauthorized": false,
"host": "blah.blah.com",
"port": 443,
"path": "/api/renter"
},
"homeownerEndpoint": {
"rejectUnauthorized": false,
"host": "blah.blah.com",
"port": 443,
"path": "/api/homeowner"
}
}
}
}
运行此PowerShell命令时:
Get-Content "test.txt" -Raw | ConvertFrom-Json
我得到的输出不包括第二级下的任何对象(即客户端和服务器对象没有属性)。
local-dev
---------
@{client=; server=}
有人有什么想法吗?
答案 0 :(得分:11)
您想要的数据就在那里。您只需要导航“节点”(不知道正确的术语)
如果您将文件中的数据返回到变量并使用Get-Member
,则可以看到您要查找的内容。
PS C:\Users\Cameron> $json | Get-Member | Select-Object name
Name
----
Equals
GetHashCode
GetType
ToString
local-dev
让我们看看本地开发中的什么。请注意酒店周围的报价。需要PowerShell将其视为字符串,否则您将获得解析错误。
PS C:\Users\Cameron> $json."local-dev"
client server
------ ------
@{server-url=http://localhost:3000} @{renterEndpoint=; homeownerEndpoint=}
让我们再往前走一点
PS C:\Users\Cameron> $json."local-dev".server.renterEndpoint
rejectUnauthorized host port path
------------------ ---- ---- ----
False blah.blah.com 443 /api/renter
我确信还有其他方法可以提取您要查找的数据。我最近刚开始看这个。重点是,如果你知道你在寻找什么,只需使用对象的属性来获得你需要的东西。如果您不了解该知识Get-Member
可以帮助公开属性以向您显示数据结构。