> 백엔드 개발 > Golang > `json.Unmarshal`을 사용하여 Go에서 복잡한 JSON 구조를 효율적으로 구문 분석하는 방법은 무엇입니까?

`json.Unmarshal`을 사용하여 Go에서 복잡한 JSON 구조를 효율적으로 구문 분석하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-19 21:50:10
원래의
929명이 탐색했습니다.

How to Efficiently Parse Complex JSON Structures in Go Using `json.Unmarshal`?

Go의 Unmarshal로 복잡한 JSON 구문 분석

encoding/json 패키지는 JSON 데이터 구문 분석을 위한 json.Unmarshal 함수를 제공합니다. 이 함수는 JSON 문자열을 사전 정의된 구조체 또는 인터페이스{} 값으로 역마샬링하는 데 사용할 수 있습니다.

중첩 배열 및 객체를 포함할 수 있는 복잡한 JSON 구조를 처리할 때 인터페이스{}를 사용하면 개발자가 예상치 못한 상황을 처리할 수 있습니다. 데이터 구조. 예를 들어 다음 JSON을 고려해보세요.

{
  "k1": "v1",
  "k2": "v2",
  "k3": 10,
  "result": [
    [
      ["v4", "v5", {"k11": "v11", "k22": "v22"}],
      ...
    ],
    "v3"
  ]
}
로그인 후 복사

이 JSON을 구문 분석하려면 다음 코드 조각을 사용할 수 있습니다.

import (
  "encoding/json"
  "fmt"
)

func main() {
  b := []byte(`{
     "k1" : "v1", 
     "k2" : "v2", 
     "k3" : 10, 
     "result" : [
                 [
                 ["v4", v5, {"k11" : "v11", "k22" : "v22"}]
                 , ... , 
                 ["v4", v5, {"k33" : "v33", "k44" : "v44"}
                 ]
                 ], 
                 "v3"
                ] 
}`)
  var f interface{}
  err := json.Unmarshal(b, &f)
  if err != nil {
    fmt.Println("Error:", err)
  }

  // Access the data in the interface{} value
  m := f.(map[string]interface{})
  fmt.Println("k1:", m["k1"])
  fmt.Println("k3:", m["k3"])
  for _, v := range m["result"].([]interface{}) {
    fmt.Println("Element:", v)
  }
}
로그인 후 복사

맵을 반복하고 유형 스위치를 사용하여, 올바른 유형의 값에 액세스할 수 있습니다. 이 접근 방식을 사용하면 유연하고 유형이 안전한 방식으로 알려지지 않은 JSON 구조로 작업할 수 있습니다.

위 내용은 `json.Unmarshal`을 사용하여 Go에서 복잡한 JSON 구조를 효율적으로 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿