ホームページ >バックエンド開発 >Golang >Go でマーシャリングするときにソートされた JSON キーを実現するにはどうすればよいですか?

Go でマーシャリングするときにソートされた JSON キーを実現するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-09 09:54:08800ブラウズ

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

ソートされたキーを使用した Go での JSON マーシャリング

Python では、ソートされた順序でキーを含む JSON を生成するのは、sort_keys パラメーターを次のように設定するのと同じくらい簡単です。真実。しかし、ゴーはどうでしょうか?この質問では、Golang で同様の動作を実現するためのオプションを検討します。

Go のキー順序付けアプローチ

Python とは異なり、Go の JSON パッケージは本質的にマーシャリング中にキーを順序付けします。特定の順序付けルールは次のとおりです。

  • マップ内のキーは辞書順に並べ替えられます。
  • 構造体のキーは、構造体で定義されている順序でマーシャリングされます。

この自動キー順序付けは、開発者が Python のように sort_keys パラメーターを明示的に指定する必要がないことを意味します。キーの順序は、Go の内部ソート アルゴリズムによって決定されます。

Under the Hood

キーの順序付けの実装は、encoding/json/encode.go にあります。具体的には 359 行目以降です。ここで、エンコーダーはマップまたは構造体のキーを反復処理し、JSON をシリアル化する前にそれらを並べ替えます。

次の Go コードを考えてみましょう:

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))
}

このコードの出力は次のようになります。

{
    "apple": 1,
    "banana": 3,
    "cherry": 2
}

ご覧のとおり、追加の構成を行わなくても、キーは自動的に辞書順に並べ替えられます。

以上がGo でマーシャリングするときにソートされた JSON キーを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。