Mik*_*ike 5 powershell json json.net
我有一个Json对象
{
"ProjectDirectory": "C:\\Main",
"SiteName": "RemoteOrder",
"ParentPath": "/Areas//Views",
"VirtualDirectories": [
{
"Name": "Alerts",
"Path": "\\Areas\\RemoteOrder\\Views\\Alerts"
},
{
"Name": "Analytics",
"Path": "\\Areas\\RemoteOrder\\Views\\Analytics"
},
{
"Name": "Auth",
"Path": "\\Areas\\RemoteOrder\\Views\\Auth"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我创造的
$config = [Newtonsoft.Json.Linq.JObject]::Parse($file)
Run Code Online (Sandbox Code Playgroud)
我可以访问类似的东西
$config["ProjectDirectory"]
$config["VirtualDirectories"]
Run Code Online (Sandbox Code Playgroud)
但是我无法访问VirtualDirectories JArray中的元素
我确认过了
$config["VirtualDirectories"][0].GetType() // JObject
$config["VirtualDirectories"].GetType() // JArray
$config // JObject
Run Code Online (Sandbox Code Playgroud)
我试过了
$config["VirtualDirectories"][0]["Name"]
$config["VirtualDirectories"][0]["Path"]
$config["VirtualDirectories"][0][0]
$config["VirtualDirectories"][0].GetValue("Name")
Run Code Online (Sandbox Code Playgroud)
当我尝试
$config["VirtualDirectories"][0].ToString()
Run Code Online (Sandbox Code Playgroud)
我明白了
{
"Name": "Alerts",
"Path": "\\Areas\\RemoteOrder\\Views\\Alerts"
}
Run Code Online (Sandbox Code Playgroud)
我真正想做的是访问它一个循环,但我似乎无法访问JObject元素
你很接近。 $config["VirtualDirectories"][0]["Name"]会给你一个JValue包含文本的内容。您只需要使用Value那里的属性来获取实际的字符串。以下是在循环中执行此操作的方法ForEach:
$config = [Newtonsoft.Json.Linq.JObject]::Parse($file)
ForEach ($dir in $config["VirtualDirectories"])
{
$name = $dir["Name"].Value
$path = $dir["Path"].Value
...
}
Run Code Online (Sandbox Code Playgroud)