> 백엔드 개발 > Golang > Go에서 알 수 없는 구조로 JSON을 디코딩하는 방법은 무엇입니까?

Go에서 알 수 없는 구조로 JSON을 디코딩하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-28 10:23:11
원래의
369명이 탐색했습니다.

How to Decode JSON with an Unknown Structure in Go?

알 수 없는 구조로 JSON 디코딩

프로그래밍 영역에서 JSON(JavaScript Object Notation)은 데이터를 표현하는 수단으로 사용되는 경우가 많습니다. 소프트웨어 응용 프로그램. 그러나 익숙하지 않은 구조의 JSON을 접할 경우 특정 정보를 추출하는 것이 어려울 수 있습니다. 다음 시나리오를 고려하십시오.

다음과 같은 JSON 문자열을 처리해야 합니다.

{ 
  "votes": { 
    "option_A": "3" 
  } 
}
로그인 후 복사

목표는 "count" 키를 포함하여 이 JSON을 확장하여 다음과 같은 결과를 출력하는 것입니다. :

{ 
  "votes": { 
    "option_A": "3" 
  }, 
  "count": "1" 
}
로그인 후 복사
로그인 후 복사

문제는 초기 JSON의 알 수 없는 구조에서 발생합니다. 특정 유형의 구조체에 json.Unmarshal 함수를 사용하는 것과 같은 기존 방법은 적용할 수 없게 됩니다.

해결책: 맵으로 언마샬링

이 장애물을 극복하기 위해 우리는 Go 지도의 유연성을 활용할 수 있습니다. 다음 코드 조각은 JSON을 맵[문자열]인터페이스{}로 역마샬링하는 방법을 보여줍니다.

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    in := []byte(`{ 
      "votes": { 
        "option_A": "3" 
      } 
    }`)
    var raw map[string]interface{}
    if err := json.Unmarshal(in, &raw); err != nil {
        panic(err)
    }
    
    // Modify the map by adding the "count" key
    raw["count"] = 1
    
    // Marshal the modified map back to JSON
    out, err := json.Marshal(raw)
    if err != nil {
        panic(err)
    }
    
    fmt.Println(string(out))
}
로그인 후 복사

JSON을 맵으로 역마샬링하여 모든 입력을 수용할 수 있는 유형에 구애받지 않는 데이터 구조를 효과적으로 생성합니다. . 이를 통해 사전 정의된 유형에 의존하지 않고 JSON 콘텐츠에 동적으로 액세스하고 수정할 수 있습니다.

위 코드의 최종 출력은 다음과 같습니다.

{ 
  "votes": { 
    "option_A": "3" 
  }, 
  "count": "1" 
}
로그인 후 복사
로그인 후 복사

이 접근 방식은 편리하고 유연한 알 수 없는 구조의 JSON을 디코딩하여 개발자가 데이터를 효율적으로 추출하고 조작할 수 있도록 지원하는 솔루션입니다.

위 내용은 Go에서 알 수 없는 구조로 JSON을 디코딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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