Maison > développement back-end > Golang > Problèmes de tri des clés JSON lors du regroupement de cartes ordonnées dans Golang

Problèmes de tri des clés JSON lors du regroupement de cartes ordonnées dans Golang

WBOY
Libérer: 2024-02-09 10:00:28
avant
741 Les gens l'ont consulté

在 Golang 中编组有序映射时排序 JSON 键的问题

Le tri des clés JSON est un problème courant lors du regroupement de cartes ordonnées dans Golang. Lorsque nous obtenons des données d'une base de données ou d'une autre source de données et que nous les marsillons au format JSON, nous devons souvent trier les clés pour garantir que l'objet JSON de sortie a un ordre de clé cohérent. Implémenter cette fonction dans Golang n'est pas compliqué. Nous pouvons utiliser une combinaison de structures et de tranches pour implémenter la fonction de tri des clés. Nous pouvons facilement atteindre l'objectif de trier les clés JSON en stockant les paires clé-valeur dans une tranche d'une structure et en utilisant le package de tri pour trier les tranches. Dans cet article, nous expliquerons comment trier les clés JSON lors du marshaling d'une carte ordonnée dans Golang et fournirons un exemple de code simple pour démontrer le processus.

Contenu de la question

Je dois parcourir un fragment JSON donné et le tableau contient des éléments individuels pour le convertir en carte. Cela est facile à faire.

Le problème est que je dois renvoyer un morceau de JSON au client dans l'ordre dans lequel il a été rendu.

J'ai trouvé quelques guides sur l'utilisation de OrderedMap mais cela ne me semble pas cohérent.

Parfois, je reçois la bonne commande, parfois non.

https://go.dev/play/p/b9hmS9BEymy

Quelqu'un peut-il me conseiller ? À en juger par la journalisation, le problème peut provenir du démarshaling du JSON entrant

Je suis vraiment réticent à utiliser des structures car le vrai JSON que je dois gérer est très complexe et nécessite beaucoup de travail car il existe de nombreuses variantes.

Solution de contournement

Le démarshaling du json ne suivra pas la commande car vous utilisez la fonction map[string]interface{}。 golang 中的 Map 是一个 hashmap,所以这并不奇怪。您应该做的是创建一个 UnmarshalJSON et effectuez un démarshaling personnalisé, sinon la commande ne pourra pas être conservée.

Vous pouvez utiliser la désorganisation standard pour tous les autres types, à l'exception des cartes, ce qui devrait faciliter les choses. Si vous voulez des détails sur la façon de procéder, je peux aussi vous l'expliquer

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