JSON 디코딩의 세계에서는 완전히 필요하지 않은 중첩 개체를 만날 때가 있습니다. 분석하다. 대신 원시 문자열이나 바이트 배열로 처리하는 것이 좋습니다. 다음은 이 접근 방식을 보여주는 샘플 코드입니다.
package main import ( "encoding/json" "fmt" ) type Bar struct { ID int64 `json:"id"` Foo json.RawMessage `json:"foo"` } func main() { jsonStr := []byte(`{ "id" : 15, "foo" : { "foo": 123, "bar": "baz" } }`) var bar Bar if err := json.Unmarshal(jsonStr, &bar); err != nil { panic(err) } fmt.Printf("%+v\n", bar) }
이 예에서 Bar 구조체에는 ID와 Foo라는 두 개의 필드가 포함되어 있습니다. ID 필드는 int64이고 Foo 필드는 json.RawMessage로 선언됩니다. 이 유형을 사용하면 중첩된 개체와 연결된 JSON 바이트를 보유할 수 있습니다.
JSON을 디코딩할 때 RawMessage 필드는 중첩된 개체를 나타내는 원시 JSON 바이트를 저장합니다. 여기에는 해당 개체 내의 중첩 필드가 포함되어 있어 필요한 경우 나중에 액세스할 수 있습니다.
이 접근 방식은 계산 리소스를 절약하기 위해 JSON의 특정 부분 구문 분석을 연기하려는 경우에 유용합니다. 또한 각 개체에 대해 사용자 정의 유형을 정의할 필요 없이 중첩된 개체를 처리하는 데 더 큰 유연성을 제공합니다.
위 내용은 Go에서 중첩된 JSON 개체를 원시 데이터로 디코딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!