> 백엔드 개발 > Golang > Go의 `json.Unmarshal`을 사용하여 복잡한 JSON 구조를 효과적으로 구문 분석하려면 어떻게 해야 합니까?

Go의 `json.Unmarshal`을 사용하여 복잡한 JSON 구조를 효과적으로 구문 분석하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-12-18 07:11:11
원래의
142명이 탐색했습니다.

How Can I Effectively Parse Complex JSON Structures Using Go's `json.Unmarshal`?

Go Unmarshal을 사용하여 복잡한 JSON 구문 분석

Go에서 인코딩/json 패키지는 JSON 데이터를 구문 분석하는 json.Unmarshal 함수를 제공합니다. 이 데이터는 예상치 못한 데이터 구조를 반복하기 위해 사전 정의된 구조체 또는 인터페이스 유형으로 역마샬링될 수 있습니다. 그러나 복잡한 JSON을 구문 분석하는 것은 어려울 수 있습니다.

예를 들어 다음 JSON을 고려해보세요.

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

json.Unmarshal을 사용하여 이 JSON을 구문 분석하려면 인터페이스{} 변수를 생성하고 구문 분석된 결과를 여기에 저장합니다:

type MyData struct {
  v1 string
  v2 string
  v3 int
  result [][]MySubData
  result2 string
}

type MySubData struct {
  v1 string
  v2 string
  result map[string]string
}

var f interface{}
err := json.Unmarshal(b, &f)
로그인 후 복사

정렬 해제 후 f 변수는 문자열 키와 빈 인터페이스가 있는 맵이 됩니다. 가치. 이 데이터에 액세스하기 위해 유형 어설션을 사용하여 f를 map[string]인터페이스{}로 변환하고 이를 통해 반복합니다.

m := f.(map[string]interface{})
for k, v := range m {
  switch vv := v.(type) {
    case string:
      // Handle string values
    case int:
      // Handle integer values
    case []interface{}:
      // Handle array values
    default:
      // Handle unknown types
  }
}
로그인 후 복사

이 접근 방식을 사용하면 유형을 유지하면서 예상치 못한 JSON 데이터 구조로 작업할 수 있습니다. 안전. 자세한 내용은 JSON과 Go에 대한 원문을 참고하세요.

위 내용은 Go의 `json.Unmarshal`을 사용하여 복잡한 JSON 구조를 효과적으로 구문 분석하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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