아래와 같이 Sample struct에서는 Inner struct를 embedded 하고 있다.
type Inner struct {
ID string `json:"id,omitempty" bson:"_id,omitempty"
Name string `json:"name" bson:"name"`
CreatedAt int64 `json:"created_at,omitempty" bson:"created_at,omitempty"`
ModifiedAt int64 `json:"modified_at,omitempty" bson:"modified_at,omitempty"`
}
type Sample struct {
Inner
}
이 때 marshaling을 수행하면 json의 경우에는 아래와 같이 원하는 대로 변환 된다.
{
"_id": "aa8a4400-08d9-4f6a-85dd-1c9fb8ca7f17",
"name": "sample",
"created_at": NumberLong("1593688321506"),
"modified_at": NumberLong("1593688321506")
}
하지만 bson으로 변환하여 mongodb로 변환할 경우 아래와 같이 embedded struct 이름으로 key가 생성된다.
{
"inner": {
"_id": "193fab9d-db73-49b7-b2cb-df6e712f9977",
"name": "sample",
"created_at": NumberLong("1593687284379"),
"modified_at": NumberLong("1593687284379")
}
}
이 경우 아래와 같이 inline tag를 지정하면 위 json과 같이 key 없이 원하는 결과를 얻을 수 있다.
type Sample struct {
Inner `bson:",inline"`
}
'Work > 개발 노트' 카테고리의 다른 글
[nginx] 정규표현식으로 패턴 매치 후 proxy pass 시 쿼리 파라미터 포함하기 (0) | 2020.09.28 |
---|---|
[k8s] Image Pull 실행 시 ECR 로그인 적용하기 (0) | 2020.09.26 |
[Go언어] tcp로 웹 서버 구동시 tcp6로 Listen (0) | 2020.09.14 |
[Flutter] Drawer 위젯 만들어보기 (1) | 2020.09.11 |
[WEB] certbot으로 Let's Encrypt 인증서 발급 받기 (1) | 2020.09.07 |
댓글