반응형
Golang의 기본 패키지 Json는 여러 기능을 제공한다.
이번 포스트에서는 의외로 사람들이 모르는 꿀팁을 공유하려고 한다.
Json
{"key1":1, "key2":"2", "key3":[1,2,3]}
예를들어서 이렇게 생긴 Json 구조가 있다고 할때 key1 은 integer이나 key2 는 string 형태이다.
type AutoGenerated struct {
Key1 int `json:"key1"`
Key2 string `json:"key2"`
Key3 []int `json:"key3"`
}
type AutoGenerated struct { Key1 int `json:"key1"` Key2 string `json:"key2"` Key3 []int `json:"key3"` }
일반적으로 위 key2 를 string 이 아닌 integer 형태로 가져온다면 위와같이 구조체를 만들고 이후에 Integer 로 변환을 하던가 등등 다양한 방법으로 할 것이다.
하지만 이렇게 사용하지 않고 파싱할때부터 아예 형 변환이 가능하다!
type AutoGenerated struct {
Key1 int `json:"key1"`
Key2 int `json:"key2,string"`
Key3 []int `json:"key3"`
}
달라진점은 Key2 가 int 형이라는 것이고 json annotation 뒤에 ,string 이 붙었다.
그렇다 딱 눈에 봐도 바로 들어올 것이다.
Key2 는 본인이 원하는 int 형으로 선언해두고 annotation 에는 ,string(원본 자료형)을 붙여서 변환하라는 의미이다!
테스트
Full example
package main
import (
"fmt"
"encoding/json"
)
type Test struct {
Key1 int `json:"key1"`
Key2 int `json:"key2,string"`
Key3 []int `json:"key3"`
}
func main() {
testJson := []byte(`{"key1":1, "key2":"2", "key3":[1,2,3]}`)
testStruct := &Test{};
json.Unmarshal(testJson, testStruct);
fmt.Println(testStruct)
}
완료!
반응형
'Web > GoLang' 카테고리의 다른 글
[go/golang] SP 프로시저 list 와 ouput parameter 동시에 사용하기 (0) | 2021.07.28 |
---|---|
[Go/Golang] 구조체 JSON 변환 시, omitempty가 적용되지 않는 경우 (0) | 2021.07.28 |
[Golang] 튜토리얼 웹에서 go 실행 (0) | 2021.07.28 |
[MSSQL] [Golang] 프로시저 내부에 다중 select 이슈 (0) | 2021.07.14 |
[Golang] gitlab subgroup repository import 하기, 에러시 대처법 (0) | 2021.06.12 |
댓글