Maison > développement back-end > Golang > Comment ignorer les champs d'erreur lors de 'Unmarshal' en cours ?

Comment ignorer les champs d'erreur lors de 'Unmarshal' en cours ?

WBOY
Libérer: 2024-02-09 09:00:20
avant
428 Les gens l'ont consulté

如何在 go 中的“Unmarshal”期间跳过错误字段?

Pendant le processus de désérialisation JSON (Unmarshal) à l'aide du langage Go, nous pouvons parfois rencontrer des champs d'erreur qui ne peuvent pas être traités. Ces champs d'erreur peuvent provoquer l'arrêt du programme, affectant l'exécution normale du code. Alors, existe-t-il un moyen d'ignorer ces champs d'erreur pendant le processus Unmarshal ? La réponse est oui. Cet article vous présentera comment utiliser certaines techniques du langage Go pour ignorer les champs d'erreur rencontrés lors d'Unmarshal. Continuons la lecture.

Contenu de la question

J'utilise json.Unmarshal(body, outputStruct) pour convertir un tableau d'octets en structure. Des erreurs peuvent survenir lors du déclassement.

Par exemple, la structure est :

type Item struct {
    Price       float64  `json:"price"`
    Quantity    int      `json:"quantity"`
}
Copier après la connexion

Si je passe quantity comme valeur flottante au lieu d'un entier, cela génère une erreur. Je veux savoir comment désorganiser uniquement les champs valides et ignorer les champs contenant des erreurs ?

Donc, si je désorganise un json :

{ price: 10, quantity: 2.5 }
Copier après la connexion

Je veux juste obtenir la valeur price dans la structure mais laisser la quantité comme valeur initiale par défaut.

Solution

Vous ne pouvez pas.

Si votre JSON contient des flottants, vous ne pouvez tout simplement pas les transformer en entiers. Vous devez :

  1. Utilisez float64 et gérez les nombres non entiers dans le code après le désorganisation
  2. Écrivez votre propre UnmarshalJSON pour vos types
  3. Effectuez un démarchage en deux étapes, une fois en ignorant le ("-") Quantity, pour qu'il n'échoue pas et effectuez seulement le deuxième démarchage de la Quantité (la nouvelle structure) et ignorez l'erreur.

2 est la « meilleure » façon, mais je ne sais pas quelle est la logique derrière « sauter les champs du mauvais type » ? Si la quantité est de 2,5, quelle sera la valeur de la quantité ? 0 ? Pourquoi?

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!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal