La fonction json.Marshal standard de Go est conçue pour convertir les structures de données Go en chaînes JSON. Cependant, il est important d'être conscient qu'il existe certaines limitations quant aux types de structures de données qu'il peut gérer.
L'une de ces limitations est que json.Marshal ne peut pas représenter les structures de données cycliques. . Tenter de le faire entraînera une récursivité infinie qui finira par conduire à une panique d'exécution.
Pour éviter ce comportement involontaire, json.Marshal implémente des mécanismes pour identifier et signaler entrées potentiellement problématiques. Lorsqu'il lui est présenté un type non valide, tel qu'un canal, il renverra une instance de json.UnsupportedTypeError.
Par exemple :
<code class="go">_, err := json.Marshal(make(chan int)) _, ok := err.(*json.UnsupportedTypeError) // ok == true</code>
De plus, json.Marshal peut détecter et signaler des types non valides. valeurs, telles que l’infini positif ou négatif. Dans ces cas, il renverra une instance de json.UnsupportedValueError.
Voici un exemple :
<code class="go">_, err := json.Marshal(math.Inf(1)) _, ok := err.(*json.UnsupportedValueError) // ok == true</code>
En étant conscient des types d'entrée et des valeurs qui peut amener json.Marshal à renvoyer une erreur, vous pouvez éviter d'éventuelles paniques d'exécution et vous assurer que votre code reste robuste et fiable.
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!