본문 바로가기
Programing/Go

[GoLang] Go에서 JSON 데이터를 구문 분석하는 방법

by 멍멍돌이야 2024. 6. 10.
반응형

Go(Golang이라고도 함)에서는 놀라운 기능을 사용하여 JSON 데이터를 구문 분석할 수 있습니다. encoding/jsonJSON 데이터를 인코딩하고 디코딩하는 기능을 제공하는 패키지입니다. Go에서 JSON을 구문 분석하는 방법에 대한 단계별 가이드는 다음과 같습니다.

 

Step 1

구문 분석하려는 JSON의 구조를 나타내는 구조체를 만듭니다. 구조체의 모든 필드에는 JSON 키에 매핑하기 위한 해당 JSON 필드 태그가 있어야 합니다.

type Person struct {
	Name  string `json:"name"`
	Age   int    `json:"age"`
	City  string `json:"city"`
	Email string `json:"email"`
}

 

Step 2

사용 json.Unmarshal() 기능 encoding/json JSON 데이터를 제공된 Go 구조체로 구문 분석하는 패키지입니다.

err := json.Unmarshal(jsonData, &person)

 

 

Go에서 JSON을 구문 분석하는 방법의 완전한 예

package main

import (
	"encoding/json"
	"fmt"
)

// Struct to represent the JSON data
type Person struct {
	Name  string `json:"name"`
	Age   int    `json:"age"`
	City  string `json:"city"`
	Email string `json:"email"`
}


// main function
func main() {
	// JSON data as a byte slice
	jsonData := []byte(`{
		"name": "Jimmy",
		"age": 28,
		"city": "New York",
		"email": "Jimmy@example.com"
	}`)

	// Create an instance of the struct to hold the parsed data
	var person Person

	// Parse the JSON data into the struct
	err := json.Unmarshal(jsonData, &person)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	// Access the parsed data
	fmt.Println("Name:", person.Name)
	fmt.Println("Age:", person.Age)
	fmt.Println("City:", person.City)
	fmt.Println("Email:", person.Email)
}

 

JSON 데이터를 구문 분석하는 온라인 도구 : 구문 분석하려는 경우 온라인 JSON 포맷터를 사용할 수 있습니다 .

 

위의 예에서 우리는 PersonJSON 데이터를 나타내는 구조체입니다. 구조체의 필드에는 해당 JSON 키로 태그가 지정됩니다. 그런 다음 우리는 json.Unmarshal() JSON 데이터 구문 분석을 수행하고 이를 할당합니다. person 변하기 쉬운.

 

위 접근 방식을 사용하여 구문 분석이 완료되면 다음의 개별 속성에 액세스할 수 있습니다. person JSON 데이터로 작업하려면 구조체를 사용하고, 문제가 발생하거나 구조체의 구조에 따라 JSON이 유효하지 않은 경우 오류를 올바르게 처리해야 합니다.

 

시간 복잡도 json.Unmarshal

그만큼 json.Unmarshal 함수를 구문 분석하려면 JSON 데이터의 각 바이트를 반복해야 합니다.

 

시간복잡도를 따져보면 json.Unmarshal 입니다 , 일반적으로 O(n) . 여기서 n은 제공된 JSON 데이터의 크기입니다.

 

탐색 encoding/json 패키지의 공식 문서와 이에 대한 자세한 내용은 pkg.go.dev 에서 확인하세요 .

 

출처: https://hackernoon.com/golang-how-to-parse-json-data-in-go

 

728x90
반응형

댓글