Go에서 혼합 유형 JSON 배열 직렬화
Go에서 문자열, 부동 소수점 및 유니코드 문자를 포함하는 혼합 유형 JSON 배열 직렬화 , 도전을 제기할 수 있습니다. Python은 혼합 유형의 배열을 허용하지만 Go에는 이 기능이 없습니다.
MarshalJSON을 사용한 직렬화
직렬화를 사용자 정의하기 위해 Go는 json.Marshaler 인터페이스를 제공합니다. 이 인터페이스를 구현하면 구조체 Row를 인코딩하는 방법을 지정할 수 있습니다. 이 경우, 우리는 이를 이질적인 값의 배열로 인코딩하려고 합니다.
type Row struct { Ooid string Score float64 Text string } func (r *Row) MarshalJSON() ([]byte, error) { arr := []interface{}{r.Ooid, r.Score, r.Text} return json.Marshal(arr) }
MarshalJSON은 인터페이스의 중간 조각을 사용하여{} 혼합된 값을 인코딩하고 인코딩된 JSON 바이트를 반환합니다.
UnmarshalJSON을 사용한 역직렬화
JSON에서 역직렬화하려면 바이트를 다시 구조체로 되돌리면 Go는 json.Unmarshaler 인터페이스를 제공합니다.
func (r *Row) UnmarshalJSON(bs []byte) error { arr := []interface{}{} json.Unmarshal(bs, &arr) // TODO: add error handling here. r.Ooid = arr[0].(string) r.Score = arr[1].(float64) r.Text = arr[2].(string) return nil }
UnmarshalJSON은 유사한 중간 인터페이스 슬라이스를 사용하여{} JSON 값을 디코딩하고 Row 구조체를 채웁니다.
By 이러한 인터페이스를 구현하면 직렬화 및 역직렬화 프로세스를 제어할 수 있어 Go에서 혼합 유형 배열로 작업할 수 있습니다.
위 내용은 Go에서 혼합 유형 JSON 배열을 직렬화 및 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!