ConvertFrom Json PowerShell Cmdlet未解析整个Json对象
我在一个名为test.txt的文件中有这个JSONConvertFrom Json PowerShell Cmdlet未解析整个Json对象,json,powershell,Json,Powershell,我在一个名为test.txt的文件中有这个JSON { "local-dev": { "client": { "server-url": "http://localhost:3000" }, "server": { "renterEndpoint": { "rejectUnauthorized": false, "host": "blah.blah.com", "port": 443,
{
"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
我得到的输出不包括第二级下的任何对象(即客户端和服务器对象没有属性)
有人有什么想法吗?你想要的数据就在那里。您只需浏览“节点”(不知道正确的术语) 如果您将文件中的数据返回到一个变量中,并使用
Get Member
可以查看您要查找的内容
PS C:\Users\Cameron> $json | Get-Member | Select-Object name
Name
----
Equals
GetHashCode
GetType
ToString
local-dev
让我们看看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
可以帮助您公开属性以显示数据结构 谢谢你,马特!“只是数据是否在那里还不是很明显。”德莫特罗表示同意。好像它一定在某个地方:)回答得好。。仅供参考,我自己也被咬伤了,我用一个技巧来证实这类事情converttojson$Json-Depth 10
,它将显示正确的完整结构(Depth 10,可以使用更高的数字),格式很好。
PS C:\Users\Cameron> $json."local-dev".server.renterEndpoint
rejectUnauthorized host port path
------------------ ---- ---- ----
False blah.blah.com 443 /api/renter