首頁 >後端開發 >Golang >在 Go 中編組時如何實作排序的 JSON 鍵?

在 Go 中編組時如何實作排序的 JSON 鍵?

DDD
DDD原創
2024-12-09 09:54:08801瀏覽

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 的內部排序演算法決定。

底層

鍵排序的實作可以在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))
}

這段程式碼的輸出將be:

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

這段程式碼的輸出將be:如你所見,鍵會自動按字典順序排序,無需任何額外配置。

以上是在 Go 中編組時如何實作排序的 JSON 鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn