>백엔드 개발 >Golang >Golang에서 MongoDB를 사용하여 JSON 응답에 포함된 구조체 필드를 포함하는 방법은 무엇입니까?

Golang에서 MongoDB를 사용하여 JSON 응답에 포함된 구조체 필드를 포함하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-09 11:01:02686검색

How to Include Embedded Struct Fields in JSON Response with MongoDB in Golang?

MongoDB를 사용하여 Golang에 구조체 삽입

Golang에서 구조체 삽입은 구조체를 다른 구조체 안에 중첩하여 구조체의 기능을 확장하는 기술입니다. 구조체. 그러나 임베디드 구조체 및 MongoDB로 작업할 때 특정 문제가 발생할 수 있습니다.

문제: JSON 응답에서 중첩 필드 제외

다음 사용자 구조체를 고려하세요. :

type User struct {
  Id      bson.ObjectId `json:"id,omitempty" bson:"_id,omitempty"`
  Name    string        `json:"name,omitempty" bson:"name,omitempty"`
  Secret  string        `json:"-,omitempty" bson:"secret,omitempty"`
}

Secret 필드는 json:"-"을 사용하여 JSON 표현에서 제외됩니다. 이는 비밀 정보를 공개해서는 안 되는 대부분의 경우에 유용합니다.

딜레마: 관리 경로 및 내장 구조체

관리자에게 비밀 필드에 대한 액세스 권한을 제공하려면 , 포함된 필드로 User 구조체를 포함하는 adminUser 구조체가 생성됩니다.

type adminUser struct {
  User
  Secret  string        `json:"secret,omitempty" bson:"secret,omitempty"`
}

그러나 이 접근 방식은 포함된 User 필드가 무시되므로 Secret 필드만 반환합니다.

해결책: bson 인라인 플래그

이 문제를 해결하기 위해 bson 패키지는 JSON 직렬화 및 MongoDB 문서 디코딩에 포함된 필드를 포함할 수 있는 인라인 플래그를 제공합니다.

type adminUser struct {
    User    `bson:",inline"`
    Secret  string `json:"secret,omitempty" bson:"secret,omitempty"`
}

이 수정을 통해 User 필드(Secret 제외)와 adminUser의 Secret 필드가 모두 JSON 응답 및 MongoDB 문서에 포함됩니다.

대체 접근 방식

또는 User 구조체에서 Secret 필드를 제거하고 adminUser 구조체에만 포함하는 것을 고려할 수 있습니다. 이는 데이터 모델을 단순화하고 승인된 관리자만이 데이터베이스에 비밀을 쓰고 읽도록 보장합니다.

위 내용은 Golang에서 MongoDB를 사용하여 JSON 응답에 포함된 구조체 필드를 포함하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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