У меня есть json файл (test.json), который выглядит примерно так:
{
"root":
{
"key":"value"
}
}
Я загружаю его в powershell, используя что-то вроде этого:
PS > $data = [System.String]::Join("", [System.IO.File]::ReadAllLines("test.json")) | ConvertFrom-Json
root
----
@{key=value}
Я хотел бы иметь возможность перечислять ключи объекта hashtable, как это определено json файлом. Итак, в идеале, я хотел бы что-то сделать как:
$data.root.Keys
и получите [ "ключ" ] назад. Я могу сделать это со встроенными хэш-таблицами в powershell, но делать это с хэш-таблицей, загруженной из json, менее очевидно.
При устранении этой проблемы я заметил, что поля, возвращаемые ConvertFrom-json, имеют разные типы, отличные от полей hashtables Powershell. Например, вызов .GetType() во встроенной хэш-таблице показывает, что он имеет тип "Hashtable":
PS > $h = @{"a"=1;"b"=2;"c"=3}
PS > $h.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Hashtable System.Object
делая то же самое для моего json-объекта, дает PSCustomObject:
PS > $data.root.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSCustomObject System.Object
Есть ли способ сбрасывать или преобразовывать этот объект в обычную файловую панель Hashtable?