我可以使用Powershell获取json中属性的层次结构路径吗?

哈立德·萨利赫(Khaled Saleh)

考虑一下json对象:

@"
        {
          ""Logging"": {
            ""LogLevel"": {
              ""Default"": ""Warning""
            }
          },
          ""AllowedHosts"": ""*"",
          ""ConnectionStrings"": {
            ""ConnectionString1"": """",
            ""ConnectionString2"": """",
            ""ConnectionString3"": """"
            }}"; 

我想在Powershell中编写一个函数,该函数将使用json并搜索某些属性并返回其路径。例如,如果函数名称为ReturnHierarchyPath(json,propertyName)

当我将其称为ReturnHierarchyPath(json,“ ConnectionString1”)时,返回值应为“ ConnectionStrings.ConnectionString1”

我在C#中实现了此功能,但我想知道在Powershell脚本中是否可行?

这是C#代码的示例:https : //dotnetfiddle.net/N5ccWY

Cbsch

在您的C#示例中,您依靠LINQ进行了一些繁重的工作。

为此,我认为最简单的方法是将JSON转换为Powershell对象,然后在存储构建路径的同时递归评估所有属性。

[CmdletBinding()]和冗长的东西都没有neccessary,但我觉得它真的很有用,能够看到执行写这样的函数时如何流动。

我认为这几乎可以满足您的要求:

Function ReturnHierarchy {
    [CmdletBinding()]
    Param(
        [PSObject]$Object,
        [string]$PropertyName,
        [string[]]$Path = @()
    )

    if (!$Object) { return }

    return $Object.PSObject.Properties.Name | % {
        Write-Verbose "Checking property $(($Path + $_) -join ".")"
        ReturnHierarchy -Object $Object.$_ -PropertyName $PropertyName -Path ($Path + $_)

        if ($_ -like $PropertyName)  {
            return ($Path + $_) -join "."
        }
    }
}

$obj = @"
{
    "Logging": {
        "LogLevel": {
            "Default": "Warning"
        }
    },
    "AllowedHosts": "*",
    "ConnectionStrings": {
        "ConnectionString1": "",
        "ConnectionString2": "",
        "ConnectionString3": ""
    }
}
"@ | ConvertFrom-Json

ReturnHierarchy -Object $obj -PropertyName "ConnectionString1" -Verbose

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用轻量级迁移来移动层次结构中的关系吗?

我们可以使用属性文件中的表达式获取属性吗

Visual Studio 可以使用不在目录层次结构中的 .editorconfig 吗?

我可以使用Linq以比这更优雅的方式从集合中获取属性吗?

可以使用python 3从networkx获取层次图吗?

我可以使用不在当前文件夹层次结构下的另一个文件夹中的 Stepdefinitions 吗?

JSON中的字段可以使用不同的类型,我可以在Go中用单个结构表示它吗?

我可以使用“ impl Fn()”特征在Rust中实现多层次的currying函数吗?

我可以使用“this”从按钮中获取文本吗?

我可以使用Cypher查询中的哪种技术仅基于每个节点的多个关系属性来获取路径

我可以使用另一个结构中的结构成员吗?

我可以使用SimpleXML解析结构未知的XML吗?

我可以使用枚举作为结构名称吗?

我可以使用常量结构进行循环引用吗?

我可以使用通用函数获取具有给定描述属性的枚举值吗?

我可以使用ReSharper自动获取带有后备字段的格式属性吗?

我们可以使用static_assert来检测结构中的填充吗?

我可以使用自己的序列化结构在Rocket中渲染模板吗?

我可以使用类路径覆盖正在运行的jar中的文件吗?

我可以使用PHP从网页中的.txt文件添加图像路径吗?

使用层次结构获取 Json 值并放入变量中

我可以使用PowerShell v2修改JSON请求吗?

我可以使用JSON.Net将具有不同名称的JSON属性读入类中的特定属性吗?

在HangFire中,我可以使用队列名称入队,而不使用Queue属性吗?

在查询中,我可以使用参数的结果来获取该查询中的更多信息吗?

我可以使用FileSystemObject使用其索引从文件夹中获取单个文件吗?

我可以使用Powershell在Active Directory中更改自己的密码吗

我们可以使用azure cli或powershell在azure中查看日志分析警报吗?

获取TSQL层次结构路径