如果不知道如何在Powershell中获取JSON对象的名称字段? [英] How do you get the name field of a JSON object in Powershell if you don't know it?

查看:346
本文介绍了如果不知道如何在Powershell中获取JSON对象的名称字段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个JSON文件:

I have this JSON file:

{
    "CARD_MODEL_TITLE": "OWNER'S MANUAL",
    "CARD_MODEL_SUBTITLE": "Configure your download",
    "CARD_MODEL_SELECT": "Select Model",
    "CARD_LANG_TITLE": "Select Language",
    "CARD_LANG_DEVICE_LANG": "Your device",
    "CARD_YEAR_TITLE": "Select Model Year",
    "CARD_YEAR_LATEST": "(Latest)",
    "STEPS_MODEL": "Model",
    "STEPS_LANGUAGE": "Language",
    "STEPS_YEAR": "Model Year",
    "BUTTON_BACK": "Back",
    "BUTTON_NEXT": "Next",
    "BUTTON_CLOSE": "Close"
}

在Powershell中将其转换为JSON对象的语法是这样的:

And the syntax I use to convert it to a JSON object in Powershell is this one:

$json = (Get-Content "jsonfile.json") -join "`n" | ConvertFrom-Json

问题是我想编辑每对 name/value value ,但是 name 字段在其他文件中可能有所不同,并且由于每个文件都需要一个脚本,因此该脚本必须是通用的.

The thing is that I want to edit the value of each pair name/value, but the name field may vary in other files, and since I want a single script for every file this has to be generic.

如何在不知道 name 字段的情况下获取一对 name/value name 字段?换句话说,我想要一种:foreach ($i in $json)

How do I get the name field of a pair name/value without knowing the name field beforehand? Or in other words, I want a kind of: foreach ($i in $json)

谢谢

推荐答案

转换后可以使用$ json.psobject.properties.name:

You can use $json.psobject.properties.name after it's converted:

@'
   {
    "CARD_MODEL_TITLE": "OWNER'S MANUAL",
    "CARD_MODEL_SUBTITLE": "Configure your download",
    "CARD_MODEL_SELECT": "Select Model",
    "CARD_LANG_TITLE": "Select Language",
    "CARD_LANG_DEVICE_LANG": "Your device",
    "CARD_YEAR_TITLE": "Select Model Year",
    "CARD_YEAR_LATEST": "(Latest)",
    "STEPS_MODEL": "Model",
    "STEPS_LANGUAGE": "Language",
    "STEPS_YEAR": "Model Year",
    "BUTTON_BACK": "Back",
    "BUTTON_NEXT": "Next",
    "BUTTON_CLOSE": "Close"
   }
'@ | set-content jsonfile.json

$json = (Get-Content "jsonfile.json" -Raw) | ConvertFrom-Json

$json.psobject.properties.name

CARD_MODEL_TITLE
CARD_MODEL_SUBTITLE
CARD_MODEL_SELECT
CARD_LANG_TITLE
CARD_LANG_DEVICE_LANG
CARD_YEAR_TITLE
CARD_YEAR_LATEST
STEPS_MODEL
STEPS_LANGUAGE
STEPS_YEAR
BUTTON_BACK
BUTTON_NEXT
BUTTON_CLOSE

您还可以通过将-Raw开关与Get-Content一起使用来消除-join

You can also eliminate the -join by using the -Raw switch with Get-Content

这篇关于如果不知道如何在Powershell中获取JSON对象的名称字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆