HOWTO · PowerShell

PowerShell에서 JSON 배열 만들기 방법

이 튜토리얼에서는 PowerShell에서 JSON 배열을 만드는 방법에 대해 논의합니다.

PowerShell에서 JSON (JavaScript Object Notation)은 다양한 시스템과 애플리케이션 간의 통신을 위한 일반적인 데이터 교환 형식입니다. 키-값 쌍이 포함된 JSON 배열은 데이터를 구성하는 구조적인 방법입니다.

이 기사에서는 PowerShell에서 JSON 배열을 만드는 다양한 방법과 함께 자세한 코드 예제와 설명을 살펴보겠습니다.

PowerShell에서 JSON 배열 만들기 위해 ConvertTo-Json 사용하기

이 예제에서는 PowerShell을 사용하여 간단한 JSON 배열을 만드는 방법을 설명합니다. 먼저 $Body라는 변수에 JSON 배열을 구성한 다음, ConvertTo-Json cmdlet을 사용하여 JSON 배열로 변환합니다.

예제 1:

$Body = @(
    @{
        FirstName ='Alen'
        LastName  ='Walker'
    }
)
ConvertTo-Json -InputObject $Body

이 코드 조각에서는 @()를 사용하여 배열을 정의하고, 배열 내에 데이터 요소를 나타내는 키-값 쌍을 가진 해시 테이블 (@{})을 만듭니다. 해시 테이블의 키는 FirstNameLastName과 같은 JSON의 필드 이름과 일치합니다.

그런 다음 ConvertTo-Json을 사용하여 이 구조를 JSON 배열로 변환합니다.

결과 JSON 출력은 아래에서 확인할 수 있습니다.

출력:

[
    {
        "LastName":  "Walker",
        "FirstName":  "Alen"
    }
]

다음 예제에서는 하위 배열을 포함하는 JSON 객체를 만드는 과정을 보여줍니다.

$Body 변수는 두 개의 속성을 가진 JSON 객체를 보유하도록 정의됩니다: My ItemsMy details. 각 속성은 항목 배열을 포함합니다.

예제 2:

$body = @{
    'My Items'   = @(
        "Item 1",
        "Item 2",
        "Item 3",
        "Item 4"
    )

    'My details' =@(
        @{
            "Name" = "Alen"
            "Id"   = "0001"
        },
        @{
            "Name" = "Mycle"
            "Id"   = "0002"
        }
    )
}
ConvertTo-Json -InputObject $Body

이 스크립트에서는 해시 테이블 (@{})을 정의하고 두 개의 키: 'My Items''My details'를 지정합니다. 'My Items'와 관련된 값은 항목 이름의 배열인 반면, 'My details'와 관련된 값은 각 항목에 대한 세부 정보를 나타내는 해시 테이블의 배열입니다.

$Body 변수에서 ConvertTo-Json을 실행하면 구조가 JSON 객체로 변환됩니다.

결과 JSON 출력은 아래에서 확인할 수 있습니다.

출력:

{
    "My details":  [
                       {
                           "Id":  "0001",
                           "Name":  "Alen"
                       },
                       {
                           "Id":  "0002",
                           "Name":  "Mycle"
                       }
                   ],
    "My Items":  [
                     "Item 1",
                     "Item 2",
                     "Item 3",
                     "Item 4"
                 ]
}

이 JSON 객체에서는 "My details""My Items"가 키로, 각각 자신의 데이터 배열과 연결되어 있습니다. 이 구조는 관련 데이터를 계층적으로 구성할 수 있게 해 주며, PowerShell에서 JSON 작업 시 일반적인 사용 사례입니다.

우리는 또한 PowerShell 객체를 만들고 ConvertTo-Json cmdlet을 사용하여 직접 JSON 배열로 변환할 수 있습니다.

아래 예를 살펴보세요:

$jsonArray = @(
    @{
        FirstName = 'John'
        LastName  = 'Doe'
    },
    @{
        FirstName = 'Jane'
        LastName  = 'Smith'
    }
)

$jsonOutput = $jsonArray | ConvertTo-Json

Write-Output $jsonOutput

출력:

[
    {
        "LastName":  "Doe",
        "FirstName":  "John"
    },
    {
        "LastName":  "Smith",
        "FirstName":  "Jane"
    }
]

여기서 예제 스크립트는 $jsonArray라는 변수를 PowerShell 해시 테이블의 배열로 정의하는 것으로 시작합니다. 각 해시 테이블은 사람을 나타내며, FirstNameLastName에 대한 속성을 포함합니다.

그런 다음 스크립트는 이 PowerShell 해시 테이블 배열을 ConvertTo-Json cmdlet을 사용하여 JSON 배열로 변환하고, 결과를 $jsonOutput 변수에 할당합니다. 마지막으로 Write-Output을 사용하여 결과 JSON 배열을 표시합니다.

요약하자면, 이 스크립트는 두 사람의 첫 번째 및 마지막 이름을 가진 JSON 배열 표현을 생성하고, 이 JSON 배열을 콘솔에 출력합니다.

PowerShell에서 JSON 배열을 만들고 파일에 저장하기 위해 ConvertTo-Json 사용하기

이 방법은 다소 복잡합니다. 우리는 여러 변수를 사용하여 JSON 배열을 단계별로 생성할 것입니다.

이 방법을 더 잘 이해하기 위해 아래 예제를 살펴보세요.

예제:

$jsonBase = @{}
$array = @{}
$data = @{"Name" = "Mycle"; "Colour" = "Alen"; }
$array.Add("User", $data)
$jsonBase.Add("UserData", $array)
$jsonBase | ConvertTo-Json -Depth 10 | Out-File ".\sample.json"

스크립트의 시작 부분에서 $jsonBase라는 빈 해시 테이블이 생성됩니다. 이것은 우리가 구축할 JSON 객체의 기본 구조가 될 것입니다.

그 다음, 배열 객체를 나타내기 위해 $array라는 또 다른 해시 테이블이 초기화됩니다. 이 $array 변수는 JSON 구조 내에서 배열을 구성하는 데이터를 저장합니다.

그런 다음 사용자의 이름과 색상과 같은 키-값 쌍을 포함하는 해시 테이블 $data를 사용하여 샘플 사용자 데이터를 정의합니다. 이 데이터는 나중에 배열에 포함될 것입니다.

이어서 스크립트는 $data 해시 테이블을 $array 해시 테이블에 추가하고, User라는 키와 연결합니다. 이는 배열 내에서 사용자 특정 데이터의 표현을 정의합니다.

계속하여 지금 사용자 데이터를 포함하는 $arrayUserData라는 키를 사용하여 $jsonBase 해시 테이블에 추가합니다. 이 단계는 사용자 데이터 배열을 더 큰 JSON 구조 내에 포함시키는 것입니다.

마지막 부분에서 스크립트는 $jsonBase 해시 테이블을 ConvertTo-Json을 사용하여 JSON 형식으로 변환합니다. 여기서 -Depth 매개변수는 중첩 구조를 변환할 때의 재귀 수준을 제어합니다.

마지막으로 Out-File cmdlet이 현재 디렉터리에 sample.json이라는 이름의 파일에 JSON 데이터를 저장합니다.

실행 후에는 UserData 키 아래에 사용자 데이터가 포함되어 있으며, 사용자 이름 및 색상이 User 키 아래의 중첩 구조로 제공되는 sample.json이라는 JSON 파일이 생성됩니다.

출력 (sample.json):

{
    "UserData":  {
                     "User":  {
                                  "Name":  "Mycle",
                                  "Colour":  "Alen"
                              }
                 }
}

PowerShell에서 JSON 배열 만들기 위해 Here-Strings 사용하기

PowerShell에서 여기 문자열을 사용하는 또 다른 유용한 기술은 원하는 레이아웃을 유지하면서 잘 형식화된 JSON 배열을 구성하는 것입니다. @" ... "@로 표시된 여기 문자열을 사용하면 PowerShell에서 텍스트 블록을 정의하면서 줄 바꿈 및 들여쓰기를 포함한 형식을 유지할 수 있습니다.

여기 문자열을 사용하여 JSON 배열을 문자열로 직접 만들 수 있습니다.

예제:

$jsonArray = @"
[
    {
        "FirstName": "John",
        "LastName": "Doe"
    },
    {
        "FirstName": "Jane",
        "LastName": "Smith"
    }
]
"@

Write-Output $jsonArray

출력:

[
    {
        "FirstName": "John",
        "LastName": "Doe"
    },
    {
        "FirstName": "Jane",
        "LastName": "Smith"
    }
]

이 예제에서는 여기 문자열 (@" ... "@)을 사용하여 문자열로 JSON 배열을 직접 생성합니다.

이 여기 문자열 내에서 우리는 적절한 구문을 사용하여 JSON 배열을 정의했습니다:

  • 전체 배열을 캡슐화하기 위해 대괄호 [...]를 사용했습니다.
  • 그런 다음 각 개별 JSON 객체를 감싸기 위해 중괄호 {...}를 사용했습니다.

마지막으로 Write-Output을 사용하여 JSON 배열을 표시했습니다.

이 접근 방식은 원하는 구조와 형식으로 JSON 배열을 구성하는 프로세스를 간소화합니다. 출력은 정의된 구조에 맞춰 잘 형식화된 JSON 배열을 보여줍니다.

사용자 정의 객체 배열을 생성하여 PowerShell에서 JSON 배열 만들기

JSON 배열을 생성하기 위해 사용할 수 있는 또 다른 방법은 각 요소를 나타내는 사용자 정의 객체 배열을 만들고 이를 JSON 배열로 변환하는 것입니다. 사용자 정의 객체는 데이터를 정의하고 구조화할 수 있게 해주는 [PSCustomObject] 형식의 인스턴스입니다.

[PSCustomObject]는 사용자 정의 속성을 가진 객체를 생성할 수 있게 해줍니다. 이는 스크립트 및 함수 내에서 구조화된 데이터를 생성하고 조작하는 데 필요한 기능입니다.

사용자 정의 속성은 해시 테이블과 유사한 구문을 사용하여 정의되며, 속성 이름과 해당 값을 지정합니다.

[PSCustomObject]@{
    Property1 = 'Value1'
    Property2 = 'Value2'
}

예제:

$jsonArray = @(
    [PSCustomObject]@{
        FirstName = 'John'
        LastName  = 'Doe'
    },
    [PSCustomObject]@{
        FirstName = 'Jane'
        LastName  = 'Smith'
    }
)

$jsonOutput = $jsonArray | ConvertTo-Json

Write-Output $jsonOutput

출력:

[
    {
        "FirstName":  "John",
        "LastName":  "Doe"
    },
    {
        "FirstName":  "Jane",
        "LastName":  "Smith"
    }
]

제공된 예제에서 $jsonArray라는 배열이 생성되며, @{} 구문을 사용하여 정의된 사용자 정의 객체를 포함합니다. 우리는 속성 FirstNameLastName 및 해당 값을 가지고 있습니다.

그런 다음 ConvertTo-Json cmdlet을 사용하여 사용자 정의 객체 배열 ($jsonArray)을 JSON 배열 형식으로 변환합니다. 결과 JSON 배열 ($jsonOutput)은 이제 각 사용자 정의 객체를 요소로 포함하며, 정의된 속성과 값이 JSON 구문으로 표현됩니다.

마지막으로 JSON 배열이 Write-Output을 사용하여 표시됩니다.

결론

결론적으로, PowerShell은 JSON 배열을 생성하는 여러 가지 방법을 제공하며, 각각은 특정 요구 사항과 선호도에 맞춰져 있습니다.

ConvertTo-Json cmdlet은 PowerShell 객체 또는 배열을 JSON 표현으로 간단하게 변환할 수 있는 다재다능한 도구입니다. JSON을 직접 구조화하던지, 여기 문자열을 사용하던지, 사용자 정의 객체를 활용하던지, PowerShell은 다양한 애플리케이션과 시스템 간의 효율적인 데이터 교환 및 조직을 위해 JSON 배열을 생성하는 유연성을 제공합니다.