Maison >développement back-end >Golang >Comment puis-je conserver les zéros de fin lors du marshaling des flotteurs vers JSON dans Go ?
JSON Marshal et Float Trailing Zeros
Problème :
Lors du marshaling des nombres flottants vers JSON en utilisant json.Marshal(), les zéros de fin sont supprimés, ce qui peut causer des problèmes lors de l'analyse du JSON avec des données externes. programmes.
Solution :
Pour conserver les zéros de fin dans la sortie JSON, une approche consiste à définir un type float personnalisé et à fournir une méthode MarshalJSON() personnalisée pour it.
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 }
Dans cette implémentation :
Exemple :
type Pt struct { Value KeepZero Unit string } func main() { data, err := json.Marshal(Pt{40.0, "some_string"}) fmt.Println(string(data), err) }
Ceci L'exemple produira la sortie JSON souhaitée :
{"Value":40.0,"Unit":"some_string"}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!