Affectation de null aux champs JSON au lieu de chaînes vides dans Golang

Puisque la chaîne vide est la valeur zéro/par défaut pour Golang string, j'ai décidé de définir tous les champs tels que interface{} à la place. par exemple

type student struct {
    FirstName  interface{} `json:"first_name"`
    MiddleName interface{} `json:"middle_name"`
    LastName   interface{} `json:"last_name"`
}

L'application que j'envoie mes données attend une valeur null au lieu d'une chaîne vide si la valeur n'est pas disponible pour ce champ spécifique.

Est-ce la bonne approche ou quelqu'un peut-il me montrer quelque chose de mieux que cela?

24
go
demandé sur Prashant 2015-06-25 14:04:14

1 réponses

Dans documentation du paquet json :

Les valeurs du pointeur codent comme la valeur pointée. Un pointeur nil code comme objet JSON null.

Ainsi, vous pouvez stocker un pointeur sur une chaîne qui sera encodée en tant que chaîne sinon nil et sera encodée en tant que "null" si nil

type student struct {
  FirstName  *string `json:"first_name"`
  MiddleName *string `json:"middle_name"`
  LastName   *string `json:"last_name"`
}
41
répondu Asdine 2015-06-25 11:18:03