Подтвердить что ты не робот

ConvertTo-JSON - массив с одним элементом

Я пытаюсь создать JSON-сериализованный массив. Когда этот массив содержит только один элемент, я получаю строку, а не массив строк (в JSON).

Несколько элементов (работает как ожидалось):

PS C:\> @("one", "two") | ConvertTo-JSON
[
    "one",
    "two"
]

Единый массив элементов (не как ожидалось):

PS C:\> @("one") | ConvertTo-JSON
"one"

Я что-то пропустил?

4b9b3361

Ответ 1

Попробуйте без конвейера:

PS C:\> ConvertTo-Json @('one', 'two')
[
    "one",
    "two"
]
PS C:\> ConvertTo-Json @('one')
[
    "one"
]

Ответ 2

Я тоже ударил по этой проблеме, но это было потому, что моя структура была слишком глубокой, и ConvertTo-Json сглаживает все под определенной глубиной до строки.

Например:

PS C:\> $MyObject = @{ "a" = @{ "b" = @{ "c" = @("d") } } }
PS C:\> ConvertTo-Json $MyObject
{
    "a":  {
              "b":  {
                        "c":  "d"
                    }
          }
}

Чтобы исправить это, вы можете передать большее значение в -Depth

PS C:\> ConvertTo-Json $MyObject -Depth 100
{
    "a":  {
              "b":  {
                        "c":  [
                                  "d"
                              ]
                    }
          }
}