如果您不知道,如何在Powershell中获取JSON对象的名称字段?

Xer*_*ero 3 powershell json powershell-3.0

我有这个JSON文件:

{
    "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"
}
Run Code Online (Sandbox Code Playgroud)

我用来将它转换为Powershell中的JSON对象的语法是这样的:

$json = (Get-Content "jsonfile.json") -join "`n" | ConvertFrom-Json
Run Code Online (Sandbox Code Playgroud)

事情是,我想编辑的价值每对名称/值,但名称字段可以在其他文件有所不同,因为我想一个脚本每个文件这必须是通用的.

我如何获得的名称一对字段名称/值不知道名字字段事先?或者换句话说,我想要一种:foreach ($i in $json)

谢谢

mjo*_*nor 9

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

@'
   {
    "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
Run Code Online (Sandbox Code Playgroud)

你也可以-join通过使用-Raw开关消除Get-Content