Go에서 이종 JSON 배열 직렬화
Go에서 이종 JSON 배열 직렬화(문자열, 숫자 및 유니코드 문자 혼합 포함) 혼합 유형 슬라이스에 대한 언어 금지로 인해 문제가 발생합니다. 다음과 같은 원하는 JSON 구조를 고려하세요.
{ results: [ ["ooid1", 2.0, "Söme text"], ["ooid2", 1.3, "Åther text"], ] }
Marshaler 인터페이스를 사용한 직렬화
직렬화를 사용자 정의하기 위해 Row 유형에 대한 json.Marshaler 인터페이스를 구현할 수 있습니다. 인터페이스의 중간 조각을 사용하여{} 이질적인 값을 인코딩합니다.
package main import ( "encoding/json" "fmt" ) 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 메서드는 Row를 혼합 유형의 배열로 변환합니다.
언마샬러 인터페이스를 사용한 역직렬화
유사하게 다음을 구현할 수 있습니다. 이기종 값을 분해하는 json.Unmarshaler 인터페이스:
func (r *Row) UnmarshalJSON(bs []byte) error { arr := []interface{}{} json.Unmarshal(bs, &arr) r.Ooid = arr[0].(string) r.Score = arr[1].(float64) r.Text = arr[2].(string) return nil }
이 메서드는 JSON 바이트를 다시 행 구조로 변환합니다.
위 내용은 Go에서 이기종 JSON 배열을 직렬화 및 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!