>백엔드 개발 >Golang >Go Structs에서 MongoDB 및 JSON 인코딩에 다른 필드 이름을 어떻게 사용할 수 있습니까?

Go Structs에서 MongoDB 및 JSON 인코딩에 다른 필드 이름을 어떻게 사용할 수 있습니까?

DDD
DDD원래의
2024-12-03 01:06:10788검색

How Can I Use Different Field Names for MongoDB and JSON Encoding in Go Structs?

MongoDB 및 JSON 인코딩에 대한 구조체 태깅 제한 극복

MongoDB 데이터베이스의 데이터에 액세스하고 이후에 이를 JSON으로 인코딩할 때 원할 경우 문제가 발생할 수 있습니다. 각 형식에 대해 서로 다른 필드 이름을 사용합니다. 예를 들어 MongoDB에는 "pageId"라는 필드가 필요할 수 있지만 이를 JSON에서 "pageId"로 인코딩하는 것이 좋습니다.

다중 태그 정의: 오해된 노력

구조체에 대해 여러 이름 태그를 정의하려는 초기 시도가 실패했습니다. 태그 문자열 구분 기호로 쉼표를 사용하려고 했습니다.

type Page struct {
    PageId string                 `bson:"pageId",json:"pageId"`
    Meta   map[string]interface{} `bson:"meta",json:"pageId"`
}

그러나 이 접근 방식은 올바르지 않습니다.

성공으로 가는 길: 공간의 힘을 발휘

구조체에서 여러 이름 태그를 성공적으로 정의하려면 공백을 태그 문자열 구분 기호로 사용해야 합니다. 수행 방법은 다음과 같습니다.

type Page struct {
    PageId string                 `bson:"pageId" json:"pageId"`
    Meta   map[string]interface{} `bson:"meta" json:"meta"`
}

이유 이해하기

reflect 패키지에 대한 문서에는 태그 문자열이 다음과 같은 비어 있지 않은 문자열로 구성되어야 한다고 명시되어 있습니다. 키-값 쌍. 각 키-값 쌍은 공백으로 구분되며 값은 Go 문자열 리터럴 구문을 사용하여 인용됩니다.

Each value is quoted using U+0022 '"' characters and Go string literal syntax.

이 규칙을 따르면 구조체에 대해 여러 이름 태그를 효과적으로 정의하고 원하는 인코딩을 얻을 수 있습니다. 행동.

위 내용은 Go Structs에서 MongoDB 및 JSON 인코딩에 다른 필드 이름을 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.