PowerShell에서 JSON 배열 만들기 방법
-
PowerShell에서 JSON 배열 만들기 위해
ConvertTo-Json
사용하기 -
PowerShell에서 JSON 배열을 만들고 파일에 저장하기 위해
ConvertTo-Json
사용하기 - PowerShell에서 JSON 배열 만들기 위해 Here-Strings 사용하기
- 사용자 정의 객체 배열을 생성하여 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
이 코드 조각에서는 @()
를 사용하여 배열을 정의하고, 배열 내에 데이터 요소를 나타내는 키-값 쌍을 가진 해시 테이블 (@{}
)을 만듭니다. 해시 테이블의 키는 FirstName
및 LastName
과 같은 JSON의 필드 이름과 일치합니다.
그런 다음 ConvertTo-Json
을 사용하여 이 구조를 JSON 배열로 변환합니다.
결과 JSON 출력은 아래에서 확인할 수 있습니다.
출력:
[
{
"LastName": "Walker",
"FirstName": "Alen"
}
]
다음 예제에서는 하위 배열을 포함하는 JSON 객체를 만드는 과정을 보여줍니다.
$Body
변수는 두 개의 속성을 가진 JSON 객체를 보유하도록 정의됩니다: My Items
및 My 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 해시 테이블의 배열로 정의하는 것으로 시작합니다. 각 해시 테이블은 사람을 나타내며, FirstName
및 LastName
에 대한 속성을 포함합니다.
그런 다음 스크립트는 이 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
라는 키와 연결합니다. 이는 배열 내에서 사용자 특정 데이터의 표현을 정의합니다.
계속하여 지금 사용자 데이터를 포함하는 $array
를 UserData
라는 키를 사용하여 $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
라는 배열이 생성되며, @{}
구문을 사용하여 정의된 사용자 정의 객체를 포함합니다. 우리는 속성 FirstName
과 LastName
및 해당 값을 가지고 있습니다.
그런 다음 ConvertTo-Json
cmdlet을 사용하여 사용자 정의 객체 배열 ($jsonArray
)을 JSON 배열 형식으로 변환합니다. 결과 JSON 배열 ($jsonOutput
)은 이제 각 사용자 정의 객체를 요소로 포함하며, 정의된 속성과 값이 JSON 구문으로 표현됩니다.
마지막으로 JSON 배열이 Write-Output
을 사용하여 표시됩니다.
결론
결론적으로, PowerShell은 JSON 배열을 생성하는 여러 가지 방법을 제공하며, 각각은 특정 요구 사항과 선호도에 맞춰져 있습니다.
ConvertTo-Json
cmdlet은 PowerShell 객체 또는 배열을 JSON 표현으로 간단하게 변환할 수 있는 다재다능한 도구입니다. JSON을 직접 구조화하던지, 여기 문자열을 사용하던지, 사용자 정의 객체를 활용하던지, PowerShell은 다양한 애플리케이션과 시스템 간의 효율적인 데이터 교환 및 조직을 위해 JSON 배열을 생성하는 유연성을 제공합니다.
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn