Циклически просматривая преобразованные данные json в Powershell, у которых нет пар ключ / значение, а вместо этого списки значений? - PullRequest
0 голосов
/ 14 января 2019

JSON:

[
  {
    "Category-1": [
      "Value1"
    ]
  },
  {
    "Category-2": [
      "Value1"
    ]
  },
  {
    "Category-3": [
      "Value1",
      "Value2"
    ]
  }
]

Сценарий PowerShell:

$jsonToParse = (Get-Content -Path $jsonPath) -join "`n" | ConvertFrom-Json

foreach ($entry in $jsonToParse) {
     log -Message ($entry) #Log function spits output to file
}

Выход:

[10:39:03]@{Category-1=System.Object[]}
[10:39:03]@{Category-2=System.Object[]}
[10:39:03]@{Category-3-Med=System.Object[]}

Как я могу разобрать это? У меня есть квадратные скобки, смешанные с фигурными скобками, и мне трудно найти точку опоры, с которой можно действительно получить данные.

Что я могу сделать, чтобы получить имена "Category"? Что я могу сделать, чтобы получить «Значения» для каждого названия категории? Думаю, тот факт, что это не все пары ключ / значение, вызывает у меня проблемы.

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Я думаю, что вы ищете что-то вроде этого:

# use the -Raw switch to get the file content as one single string
$jsonToParse = Get-Content -Path $jsonPath -Raw | ConvertFrom-Json

foreach ($entry in $jsonToParse) {
    # format a string for the log file using the object ($entry) Name followed by the Value
    # This Value can be an array of more than one items, so join these with a comma
    $msg = '{0} = {1}' -f $entry.PSObject.Properties.Name, ($entry.PSObject.Properties.Value -join ', ')
    log -Message $msg  #Log function spits output to file
}

выход:

[10:39:03]Category-1 = Value1
[10:39:03]Category-2 = Value1
[10:39:03]Category-3 = Value1, Value2
0 голосов
/ 14 января 2019

У вас есть массив, который содержит значения («Категория-1» и т. Д.). Значения содержат массивы со значениями («Value1» и т. Д.).

$jsonToParse[0] = Category-1
$jsonToParse[1] = Category-2
$jsonToParse[2] = Category-3

$jsonToParse[1].'Category-2' = Value1

Если вы заполните приведенные выше примеры, вывод будет таким!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...