>백엔드 개발 >Golang >Go에서 동적 키-값 쌍의 JSON 배열을 구문 분석하는 방법은 무엇입니까?

Go에서 동적 키-값 쌍의 JSON 배열을 구문 분석하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-16 20:36:12844검색

How to Parse a JSON Array of Dynamic Key-Value Pairs in Go?

Go에서 JSON 배열을 데이터 구조로 구문 분석

Go에서 JSON 데이터로 작업할 때는 적절한 데이터 구조를 이해하는 것이 중요합니다. 다양한 JSON 형식의 경우. 이 경우 동적 키-값 쌍의 JSON 배열을 다루고 있습니다.

문제:

다음 배열이 포함된 JSON 파일을 구문 분석하려고 합니다. JSON 객체. 그러나 데이터를 표현하기 위해 간단한 map[string]string을 사용하면 오류가 발생합니다.

[
  {"a" : "1"},
  {"b" : "2"},
  {"c" : "3"}
]
type data map[string]string

c, _ := ioutil.ReadFile("c")
dec := json.NewDecoder(bytes.NewReader(c))
var d data
dec.Decode(&d) // Error: cannot unmarshal array into Go value of type main.data

해결책:

JSON을 올바르게 구문 분석하려면 배열을 사용하려면 개체 배열을 나타내는 데이터 구조를 정의해야 합니다. 이는 지도 조각을 포함하는 사용자 정의 유형을 사용하여 달성할 수 있습니다.

type mytype []map[string]string

코드:

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
)

type mytype []map[string]string

func main() {
    var data mytype
    file, err := ioutil.ReadFile("test.json")
    if err != nil {
        log.Fatal(err)
    }
    err = json.Unmarshal(file, &data)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(data)
}

예:

제공된 JSON의 경우 파일:

[
  {"a" : "1"},
  {"b" : "2"},
  {"c" : "3"}
]

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

[{map[a:1]} {map[b:2]} {map[c:3]}]

위 내용은 Go에서 동적 키-값 쌍의 JSON 배열을 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.