Go에서 여러 JSON 개체 구문 분석
JSON 데이터를 처리할 때 서버에서 여러 JSON 개체가 반환되는 상황에 직면하는 것이 일반적입니다. , 대괄호로 묶인 단일 객체가 아닌. 이러한 데이터를 구문 분석하는 것은 고유한 과제를 제시합니다.
예를 들어 다음 형식의 응답이 있는 경우:
{"something":"foo"} {"something-else":"bar"}
encoding/json 패키지를 직접 사용하여 이 데이터를 구문 분석할 수 없습니다. , 대괄호로 개체를 묶을 것으로 예상합니다.
이 문제를 해결하려면 인코딩/json 패키지에서 json.Decoder 유형을 활용할 수 있습니다. 이 유형을 사용하면 바이트 스트림에서 JSON 데이터를 디코딩하여 여러 JSON 개체를 처리하는 데 적합하게 만들 수 있습니다.
다음은 json.Decoder를 사용하여 여러 JSON 개체를 구문 분석하는 방법에 대한 예입니다.
package main import ( "encoding/json" "fmt" "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) } }
이 예에서는 strings.NewReader를 사용하여 입력 문자열에서 바이트 스트림을 생성합니다. 그런 다음 json.Decoder를 생성하여 이 스트림을 디코딩합니다.
루프 내에서 dec.Decode(&doc)를 반복적으로 호출하여 각 JSON 개체를 Doc 구조로 디코딩합니다. 루프는 스트림이 끝날 때까지 계속되며 그 지점에서 err은 io.EOF로 설정됩니다.
json.Decoder를 활용하면 대괄호로 묶이지 않은 경우에도 여러 JSON 개체를 효과적으로 구문 분석할 수 있습니다. 다양한 JSON 데이터 형식을 처리할 수 있습니다.
위 내용은 대괄호 없이 Go에서 여러 JSON 개체를 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!