> 백엔드 개발 > Golang > Go에서 특히 중첩된 여러 JSON 개체를 어떻게 구문 분석할 수 있나요?

Go에서 특히 중첩된 여러 JSON 개체를 어떻게 구문 분석할 수 있나요?

DDD
풀어 주다: 2024-12-26 09:03:09
원래의
833명이 탐색했습니다.

How Can I Parse Multiple JSON Objects in Go, Especially When They're Nested?

Go에서 여러 JSON 개체 구문 분석: 중첩 개체 처리

중첩 개체 형태로 서버에서 반환된 여러 JSON 개체를 처리하는 경우 , 표준 인코딩/json 패키지에 어려움이 발생할 수 있습니다. 이 기사에서는 이러한 시나리오를 효과적으로 처리하기 위해 json.Decoder를 사용하는 솔루션에 대해 자세히 설명합니다.

다음 예를 고려하세요.

{"something":"foo"}
{"something-else":"bar"}
로그인 후 복사

다음 코드를 사용하여 이 데이터를 구문 분석합니다.

correct_format := strings.Replace(string(resp_body), "}{", "},{", -1)
json_output := "[" + correct_format + "]"
로그인 후 복사

오류가 발생합니다.

해결책 사용 json.Decoder

이 문제를 해결하기 위해 우리는 json.Decoder를 활용합니다. json.Decoder는 JSON 데이터 스트림을 읽고 디코딩하여 입력에서 개별 JSON 개체를 순차적으로 디코딩합니다.

package main

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

var input = `
{"foo": "bar"}
{"foo": "baz"}
`

type Doc struct {
    Foo string
}

func main() {
    dec := json.NewDecoder(strings.NewReader(input))
    for {
        var doc Doc

        err := dec.Decode(&doc)
        if err == io.EOF {
            // all done
            break
        }
        if err != nil {
            log.Fatal(err)
        }

        fmt.Printf("%+v\n", doc)
    }
}
로그인 후 복사

이 솔루션에서는

  • json.Decoder가 초기화됩니다. JSON 데이터가 포함된 문자열에서 읽습니다.
  • 루프가 스트림을 반복하여 각 JSON 객체를 Doc 구조체.
  • 스트림의 끝을 나타내는 io.EOF(파일 끝)를 만날 때까지 디코딩이 계속됩니다.
  • 성공적으로 디코딩된 각 객체가 인쇄됩니다.

플레이그라운드 및 결론

이 솔루션을 이동 중에도 사용해 볼 수 있습니다. 플레이그라운드: https://play.golang.org/p/ANx8MoMC0yq

json.Decoder를 사용하면 더 큰 JSON 구조 내에 중첩되어 있는 경우에도 여러 JSON 개체를 구문 분석할 수 있습니다.

위 내용은 Go에서 특히 중첩된 여러 JSON 개체를 어떻게 구문 분석할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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