Maison > Article > développement back-end > Convertir les valeurs lors du marshalling
l'éditeur php Strawberry vous présente la conversion des valeurs lors du regroupement. En programmation, la conversion de valeurs lors du marshalling fait référence à l'opération de conversion entre différents types de données. En convertissant des valeurs, nous pouvons convertir une valeur d'un type de données en un autre type de données pour répondre à des besoins spécifiques. Par exemple, convertissez une chaîne en entier, ou un entier en chaîne, etc. La conversion des valeurs est l'une des opérations les plus courantes et les plus importantes en programmation. Maîtriser l'utilisation des valeurs converties peut améliorer la flexibilité et la lisibilité du code, tout en évitant certaines erreurs et problèmes potentiels. Dans les articles suivants, nous présenterons en détail les méthodes de conversion et les considérations entre les différents types de données pour vous aider à mieux comprendre et appliquer les valeurs de conversion lors du marshalling.
Étant donné le code ci-dessous, est-il possible de convertir les noms lors du démarchage ? Disons que je veux qu'il soit toujours en minuscules, que ce soit dans le json ou non.
type Person struct { FirstName string `json:"first_name"` LastName string `json:"last_name"` } func main() { jsonText := GetJsonFromSomewhere() var v Person json.Unmarshal(jsonText, &v) }
Une façon d'y parvenir est de créer un type personnalisé qui implémente une fonction encoding/json
包中的 unmarshaler
接口。 这是此界面的链接。任何实现 unmarshaler
的类型都可以在进行 json 解组时用作结构体字段的类型。在进行解组时,encoding/json
将使用接口的 unmarshaljson
qui convertit les octets json en un type de champ.
Vous pouvez donc écrire une fonction unmarshaljson
qui, entre autres choses, change une valeur de chaîne en minuscules.
Voici un exemple :
type lowercasestring string func (l *lowercasestring) unmarshaljson(bytes []byte) error { lowercasedstring := strings.tolower(string(bytes)) *l = lowercasestring(lowercasedstring) return nil }
Ensuite, dans la structure de la carte json, vous pouvez utiliser un type personnalisé à la place string
:
type person struct { firstname lowercasestring `json:"first_name"` lastname lowercasestring `json:"last_name"` }
Si vous désorganisez cette structure, les valeurs du prénom et du nom seront en minuscules (notez également que vous devez les transtyper en string
以将它们用作 string
pour les utiliser comme
testJSON := `{"first_name" : "TestFirstNAME", "last_name": "TestLastNAME"}` var result Person err := json.Unmarshal([]byte(testJSON), &result) if err != nil { /*handle the error*/ } fmt.Println(result.FirstName) // prints "testfirstname" var stringLastName string stringLastName = string(result.LastName) // need to type convert from LowerCaseString to string fmt.Println(stringLastName) // prints "testlastname"Il s'agit du code ci-dessus exécuté dans Go Playground. 🎜
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!