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

时间:2017-06-24 19:34:09

标签: 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是几个“和”和“或”的组合,如和.or.or.and 。 问题是我无法弄清楚我的$ ab。$ test.cond的想法是如何用Powershell编写的。从理论上讲,我可以手动测试给定深度的所有可能组合,但我不愿意。无论如何都知道这是如何工作的?非常感谢!

(Powershell第5版)

1 个答案:

答案 0 :(得分:2)

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

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

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

当然没有错误检查。任何其他解决方案可能会成为一个单独的递归函数,如果你想得到真正的检查等,但它会更脆弱,然后使用明确定义的对象集。