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
이 코드 조각에서는 @()를 사용하여 배열을 정의하고, 배열 내에 데이터 요소를 나타내는 키-값 쌍을 가진 해시 테이블 (@{})을 만듭니다. 해시 테이블의 키는 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 배열을 생성하는 유연성을 제공합니다.