JSON キーの並べ替えは、Golang で順序付けされたマップをマーシャリングするときによく発生する問題です。データベースまたは他のデータ ソースからデータを取得して JSON 形式にマーシャリングする場合、多くの場合、出力される JSON オブジェクトのキー順序が一貫していることを確認するためにキーを並べ替える必要があります。 Golang でのこの機能の実装は複雑ではなく、構造体とスライスの組み合わせを使用してキーをソートする機能を実装できます。 JSON キーをソートするという目的は、キーと値のペアを構造体のスライスに保存し、sort パッケージを使用してスライスをソートすることで簡単に達成できます。この記事では、Golang で順序付きマップをマーシャリングするときに JSON キーを並べ替える方法を説明し、そのプロセスを示す簡単なコード例を示します。
指定された JSON フラグメントを反復処理する必要があり、配列にはマップに変換するための個々の項目が含まれています。これは簡単です。
問題は、JSON の一部を、提示された順序でクライアントに返す必要があることです。
OrderedMap の使用に関するガイドをいくつか見つけましたが、一貫性がないようです。
正しい順序が得られることもあれば、そうでないこともあります。
https://go.dev/play/p/b9hmS9BEymy
誰か提案できますか?ログから判断すると、問題は受信 JSON のアンマーシャリングにある可能性があります
私が扱う必要がある実際の JSON は非常に複雑で、バリエーションが非常に多いため多くの作業が必要になるため、構造体を使用することには本当に気が進みません。
map[string]interface{}
を使用しているため、JSON のアンマーシャリングは順序に従いません。 golang のマップはハッシュマップであるため、これは驚くべきことではありません。 UnmarshalJSON
関数を作成し、カスタム アンマーシャリングを実行する必要があります。そうしないと、順序を保持できません。
マップを除く他のすべての型に対して標準のアンマーシャリングを使用できるため、作業が容易になります。これを行う方法の詳細が必要な場合は、それについても説明します
以上がGolang で順序付けされたマップをマーシャリングする際の JSON キーのソートに関する問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。