> 백엔드 개발 > Golang > Go에서 구조를 알 수 없는 JSON 객체를 어떻게 수정할 수 있나요?

Go에서 구조를 알 수 없는 JSON 객체를 어떻게 수정할 수 있나요?

Patricia Arquette
풀어 주다: 2024-12-27 16:58:14
원래의
175명이 탐색했습니다.

How Can I Modify a JSON Object with an Unknown Structure in Go?

구조를 알 수 없는 JSON 처리: 역마샬링 및 수정

많은 프로그래밍 시나리오에서 구조를 알 수 없는 JSON 데이터를 처리하는 것은 어려울 수 있습니다. 그러나 Go는 이러한 장애물을 극복할 수 있는 솔루션을 제공합니다.

다음과 같은 JSON 문자열을 받는 상황을 생각해 보세요.

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

목표는 다음과 같은 새로운 "count" 키를 추가하는 것입니다. JSON 개체에 "1" 값을 추가합니다. 그러나 JSON 구조는 예측할 수 없기 때문에 미리 정의된 구조체와 함께 표준 json.Unmarshal 함수를 사용할 수 없습니다.

이 문제를 해결하려면 map[string]interface{} 유형을 활용할 수 있습니다. 이를 통해 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)
    }

    raw["count"] = 1

    out, err := json.Marshal(raw)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(out))
}
로그인 후 복사

이 코드에서는 JSON 데이터를 원시 맵으로 역마샬링합니다. 구조를 알 수 없으므로 값은 인터페이스로 표시됩니다.

그런 다음 키가 "count"이고 값이 1인 새 키-값 쌍을 추가하여 맵을 수정할 수 있습니다. 마지막으로 json.Marshal을 사용하여 수정된 지도를 다시 JSON 문자열로 마샬링합니다.

출력은 예상대로입니다.

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

이 기술은 JSON 데이터를 처리하는 유연한 방법을 제공합니다. 알 수 없는 구조를 사용하여 필요에 따라 데이터를 수정하고 강화할 수 있습니다.

위 내용은 Go에서 구조를 알 수 없는 JSON 객체를 어떻게 수정할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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