Maison > développement back-end > Golang > Comment puis-je obtenir des clés JSON triées lors du tri dans Go ?

Comment puis-je obtenir des clés JSON triées lors du tri dans Go ?

DDD
Libérer: 2024-12-09 09:54:08
original
833 Les gens l'ont consulté

How Can I Achieve Sorted JSON Keys When Marshalling in Go?

JSON Marshalling in Go avec des clés triées

En Python, produire du JSON avec des clés dans un ordre trié est aussi simple que de définir le paramètre sort_keys sur Vrai. Mais qu'en est-il de Go ? Cette question explore les options permettant d'obtenir un comportement similaire dans Golang.

Approche de commande des clés de Go

Contrairement à Python, le package JSON de Go ordonne de manière inhérente les clés lors du marshalling. Les règles de classement spécifiques sont les suivantes :

  • Les clés des cartes sont triées lexicographiquement.
  • Les clés des structures sont organisées dans l'ordre dans lequel elles sont définies dans la structure.

Cet ordre automatique des clés signifie que les développeurs n'ont pas besoin de spécifier explicitement un paramètre sort_keys comme en Python. L'ordre des clés est déterminé par les algorithmes de tri internes de Go.

Sous le capot

L'implémentation de l'ordre des clés peut être trouvée dans encoding/json/encode.go , plus précisément à partir de la ligne 359. Ici, l'encodeur parcourt les clés de la carte ou de la structure et les trie avant de sérialiser le JSON.

Exemple

Considérez le code Go suivant :

package main

import "encoding/json"

type MyStruct struct {
    Field1 string
    Field2 int
}

func main() {
    data := map[string]int{"apple": 1, "banana": 3, "cherry": 2}
    jsonData, _ := json.Marshal(data)

    fmt.Println(string(jsonData))
}
Copier après la connexion

La sortie de ce code sera :

{
    "apple": 1,
    "banana": 3,
    "cherry": 2
}
Copier après la connexion

Comme vous pouvez voyez, les clés sont automatiquement triées lexicographiquement, sans aucune configuration supplémentaire.

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!

source:php.cn
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