json - Powershell:json 和 dot 包括值变量访问

标签 json powershell

我在 Powershell 中访问结构可预测但深度未知的 json 对象时遇到问题。因此,json-objects 包含可以通过“and”和“or”连接的信息,但这些连接可以在多个级别中使用。举个例子:

$ab=@"
{
"cond":   "one",
"and":  [
{"cond":   "two"},
{"cond":  "three"},
{"or": [{"cond": "four"},
{"cond": "five"}
]
}
]
}
"@ | ConvertFrom-Json 

我需要能够阅读/测试类似的内容

$test="and.or"
$ab.$test.cond

其中 $test 是几个“and”和“or”的组合,例如 and.or.or.and 。 问题是我不知道如何在 Powershell 中编写 $ab.$test.cond 的想法来工作。理论上,我可以手动测试给定深度的所有可能组合,但我不想这样做。无论如何知道这是如何运作的吗?非常感谢!

(Powershell 版本 5)

最佳答案

我认为您应该为条件引擎/描述符定义一组适当的类,可以使用 PowerShell 类或使用 C# 创建程序集,以便可以在 PowerShell 中使用类型。

但是对于快速但肮脏的 PowerShell 解决方案,您可以这样做:

"`$ab.$test.cond" | Invoke-Expression
# or
'$ab.{0}.cond' -f $test | Invoke-Expression

这当然没有错误检查。如果您想进行真正的检查等,任何其他解决方案都可能是一个单独的递归函数,但它比使用一组明确定义的对象更脆弱。

关于json - Powershell:json 和 dot 包括值变量访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44740242/

相关文章:

javascript - 如何从sql中获取nodejs的数据并返回json?

powershell - 为什么在PowerShell中不能多次读取KeyPress?

windows - 从 powershell 递归归档某种类型的所有文件

javascript - JSON.stringify 时,Json 到 ASP.NET MVC Controller 参数为 null

javascript - JSON 对象中的二分搜索

powershell - Powershell中来自外部exe和我的自定义对象的输出

powershell - 比较字符串与数组

powershell - CruiseControl.Net 不能很好地与 PowerShell 配合使用

javascript - CoffeeScript 中的 for 循环

java - 接收json数据时出现JSON解析错误