source

단일 항목이 있는 배열로 변환

ittop 2023. 10. 24. 21:32
반응형

단일 항목이 있는 배열로 변환

JSON 직렬화된 배열을 만들려고 합니다.해당 배열에 하나의 항목만 포함된 경우 문자열을 얻을 수 있지만 문자열의 배열은 얻을 수 없습니다(JSON에서).

여러 항목(예상대로 작동):

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

단일 항목 배열(예상 외):

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

내가 뭘 빼놓았나요?

파이프라인 없이 시도:

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

저도 이 문제에 부딪혔지만 제 구조가 너무 깊어서 Convert To-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"
                              ]
                    }
          }
}

나도 같은 문제가 있어서 알게 됐어요, 당신이 그냥 그 문제를 추가할 수 있다는 걸요.-AsArray에게ConvertTo-Json지휘.예:

❯ @("one") | ConvertTo-Json -AsArray       
[
  "one"
]
❯ @("one", "two") | Convert-ToJson -AsArray
[
  "one",
  "two"
]

오늘도 같은 문제에 직면했습니다.덧붙이자면, 이런 물건이 있다면

@{ op="replace"; path="clientName"; value="foo"}

다음으로 지정해야 합니다.

ConvertTo-Json @( @{ op="replace"; path="clientName"; value="foo"} )

이중 @s는 때때로 혼동될 수 있습니다.

이 문제에 직면한 것은 개체의 하위 배열입니다.그 배열 안에는 하나의 물체가 들어 있었고,ConvertTo-Json배열에서 개체를 제거하고 있었습니다.

이를 해결하기 위한 두 가지 사항:

나는 그것을 설정해야만 했습니다.-Depth매개 변수 onConvertTo-Json

$output = $body | ConvertTo-Json -Depth 10

배열의 개체를 해시 테이블로 만든 다음 개체로 변환해야 했습니다.

$myArray.Add([pscustomobject]@{prop1 = ""; prop2 = "" })

@ 앞에 a를 놓습니다.

,@("one") | ConvertTo-Json
[
  "one"
]

저의 경우 준비된 목록은 함수에서 반환된 배열이었습니다.이것은 단순한 줄 배열이었습니다.어레이가 작동하기 전에 @($ReturnedObject)로 다시 래핑해야 했습니다.

To-Json 변환 @($ReturnObject)

5.1 및 7.x를 인식하는 것은 좋지 않습니다. 7.x는 사용자가 말하는 대로 수행하지만 5.1은 다음과 같이 수행합니다.

    {
    "value":  [
    "one"
              ],
    "Count":  1
}

언급URL : https://stackoverflow.com/questions/18662967/convertto-json-an-array-with-a-single-item

반응형