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
'Programing > Go' 카테고리의 다른 글
Golang Vs Java: 다음 프로젝트에 적합한 도구 선택 (0) | 2024.06.11 |
---|---|
Golang Vs Python: 어떤 언어가 가장 좋나요? (0) | 2024.06.11 |
[GoLang] 다양한 작업을 위한 10가지 일반적인 Go(Golang) 코드 조각 (0) | 2024.06.10 |
[GoLang] Go의 go mod init 명령 이해 (0) | 2024.06.10 |
[GoLang] Go 1.22에는 무엇이 들어있나요? (0) | 2024.06.10 |
댓글