JSON 마샬링 및 부동 소수점 후행 0
문제:
부동 소수점 숫자를 JSON으로 마샬링할 때 json.Marshal()을 사용하면 후행 0이 제거되어 잠재적으로 문제가 발생할 수 있습니다. 외부 프로그램으로 JSON을 구문 분석할 때.
해결책:
JSON 출력에서 후행 0을 유지하려면 사용자 정의 부동 소수점 유형을 정의하고 이에 대한 사용자 정의 MarshalJSON() 메서드입니다.
type KeepZero float64 func (f KeepZero) MarshalJSON() ([]byte, error) { if float64(f) == float64(int(f)) { return []byte(strconv.FormatFloat(float64(f), 'f', 1, 32)), nil } return []byte(strconv.FormatFloat(float64(f), 'f', -1, 32)), nil }
여기서 구현:
예:
type Pt struct { Value KeepZero Unit string } func main() { data, err := json.Marshal(Pt{40.0, "some_string"}) fmt.Println(string(data), err) }
이 예는 원하는 JSON 출력을 생성합니다.
{"Value":40.0,"Unit":"some_string"}
위 내용은 Go에서 부동 소수점을 JSON으로 마샬링할 때 후행 0을 어떻게 보존할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!