> 백엔드 개발 > Golang > Go에서 마샬링할 때 정렬된 JSON 키를 어떻게 얻을 수 있나요?

Go에서 마샬링할 때 정렬된 JSON 키를 어떻게 얻을 수 있나요?

DDD
풀어 주다: 2024-12-09 09:54:08
원래의
795명이 탐색했습니다.

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

정렬된 키를 사용하여 Go에서 JSON 마샬링

Python에서 정렬된 키를 사용하여 JSON을 생성하는 것은 sort_keys 매개변수를 다음으로 설정하는 것만큼 간단합니다. 진실. 하지만 Go는 어떻습니까? 이 질문은 Golang에서 유사한 동작을 달성하기 위한 옵션을 탐색합니다.

Go의 키 순서 지정 접근 방식

Python과 달리 Go의 JSON 패키지는 본질적으로 마샬링 중에 키를 순서 지정합니다. 구체적인 순서 규칙은 다음과 같습니다.

  • 맵의 키는 사전순으로 정렬됩니다.
  • 구조체의 키는 구조체에 정의된 순서대로 정렬됩니다.

이 자동 키 순서 지정은 개발자가 Python에서처럼 sort_keys 매개변수를 명시적으로 지정할 필요가 없음을 의미합니다. 키 순서는 Go의 내부 정렬 알고리즘에 의해 결정됩니다.

Under the Hood

키 순서 구현은 인코딩/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
}
로그인 후 복사

보시다시피 키는 추가 구성 없이 사전순으로 자동 정렬됩니다.

위 내용은 Go에서 마샬링할 때 정렬된 JSON 키를 어떻게 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿