PowerShell无法获得JSON键 /值

发布于 2025-02-05 20:14:17 字数 1804 浏览 2 评论 0 原文

您好,我有一个JSON文件:

{
  "supports": {},
  "dependencies": {
    "AST.NxTestware.main": "1.1.0",
    "otherPackagenName": "7.7.7"
  },
  "frameworks": {
    ".NETPortable,Version=v4.5,Profile=Profile78": {}
  }
}

我正在尝试编写一个.ps1 PowerShell脚本,该脚本将在“依赖关系”下查看每个项目,检查名称是否匹配,如果是这样,请检索版本号。

但是我在“依赖项”中的每个项目中都遇到了麻烦,并且无法检索

我的PS1的包装名称字符串或版本编号,如下所示:


$targetName = "otherPackagenName"
Write-Host "Trying to get version # of $targetName if it exists inside project.json"

# get json file contents
$json = Get-Content .\project.json | ConvertFrom-Json

# retrieve dependencies 
$dependencies = $json.dependencies
Write-Host "dependencies = $dependencies"

# iterate through each dependency
foreach ($dep in $dependencies) {
    Write-Host "dep = $dep"

    # try to get dependency name (attempt1)
    $depName1 = $dep[0]
    Write-Host "depName1 = $depName1"
    
    # try to get dependency name (attempt2)
    $depName2 = $dep.Name
    Write-Host "depName2 = $depName2"

    if($depName1 -eq $targetName) {
        write-host "Found it! now get version number"
    } else {
        write-host "Did not find our package"
    }  
}



输出显示它正确检索JSON键/值对,但我无法弄清楚如何检索包装名称和版本编号,当我尝试过的每件事时,只需返回空白:

Trying to get version # of otherPackagenName if it exists inside project.json
dependencies = @{AST.NxTestware.main=1.1.0; otherPackagenName=7.7.7}
dep = @{AST.NxTestware.main=1.1.0; otherPackagenName=7.7.7}
depName1 = @{AST.NxTestware.main=1.1.0; otherPackagenName=7.7.7}
depName2 =
Did not find our package

我的依赖项即将通过:

@{AST.NxTestware.main=1.1.0; otherPackagenName=7.7.7}

我如何迭代此对象?

如何检索键(' ast.nxtestware.main')and value('1.1.0')适用于每个依赖关系?

Hello I have a json file below:

{
  "supports": {},
  "dependencies": {
    "AST.NxTestware.main": "1.1.0",
    "otherPackagenName": "7.7.7"
  },
  "frameworks": {
    ".NETPortable,Version=v4.5,Profile=Profile78": {}
  }
}

and I am trying to write a .ps1 powershell script that will look at every item under 'dependencies', check if the name matches, and if so, retrieve the version number.

but I am having trouble parsing through each item in 'dependencies', and cannot retrieve the package name string or version number

My ps1 looks like this:


$targetName = "otherPackagenName"
Write-Host "Trying to get version # of $targetName if it exists inside project.json"

# get json file contents
$json = Get-Content .\project.json | ConvertFrom-Json

# retrieve dependencies 
$dependencies = $json.dependencies
Write-Host "dependencies = $dependencies"

# iterate through each dependency
foreach ($dep in $dependencies) {
    Write-Host "dep = $dep"

    # try to get dependency name (attempt1)
    $depName1 = $dep[0]
    Write-Host "depName1 = $depName1"
    
    # try to get dependency name (attempt2)
    $depName2 = $dep.Name
    Write-Host "depName2 = $depName2"

    if($depName1 -eq $targetName) {
        write-host "Found it! now get version number"
    } else {
        write-host "Did not find our package"
    }  
}



output shows it correctly retrieves the json key/value pair, but I cant figure out how to retrieve the package name and version number, as every thing ive tried just returns blank:

Trying to get version # of otherPackagenName if it exists inside project.json
dependencies = @{AST.NxTestware.main=1.1.0; otherPackagenName=7.7.7}
dep = @{AST.NxTestware.main=1.1.0; otherPackagenName=7.7.7}
depName1 = @{AST.NxTestware.main=1.1.0; otherPackagenName=7.7.7}
depName2 =
Did not find our package

my dependencies is coming through like so:

@{AST.NxTestware.main=1.1.0; otherPackagenName=7.7.7}

How can I iterate through this object?

How can I retrieve the key ('AST.NxTestware.main') and value ('1.1.0') for each dependency?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

羁客 2025-02-12 20:14:17

我猜您正在寻找这个:

$json.Dependencies | ForEach-Object {
    $prop = $_.PSObject.Properties

    [pscustomobject]@{
        DependencyName = $prop.Name
        Version        = [version] $prop.Value
    }
}

您可以通过访问对象的 和属性 value 。 microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about/about/about_intrinsic_members?view=Powershell-7.2#psobject“ rel =” rel =“ nofollow noreferrer” ,从那里您可以参考 属性属性

I'm guessing you're looking for this:

$json.Dependencies | ForEach-Object {
    $prop = $_.PSObject.Properties

    [pscustomobject]@{
        DependencyName = $prop.Name
        Version        = [version] $prop.Value
    }
}

You can get an object's property Name and property Value by accessing the object's PSObject member, from there you can reference the Properties property of each object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文