Golang API 생각만 해도 귀찮다.
그냥 뭐 다 알고 공식 사이트라던지
저번 포스팅에서 참고했던 블로그라던지 많다.
추가로 작업한 것만 올려보자.
Golang에서 Json 변환을 해봤다.
Struct -> Json
package main import ( "encoding/json" "fmt" ) type Animal struct { ID int64 `json:"id"` Types string `json:"types"` Name string `json:"name"` Sex string `json:"-"` Age int `json:"age,omitempty"` } func main() { animal := Animal{ID: 1, Types: "CAT", Name: "CATIA", Sex: "male"} jb, err := json.Marshal(animal) if err != nil { fmt.Println(err) return } fmt.Println(string(jb)) }
이런식으로 변환하면 된다.
구조체 멤버변수 옆에 태그를 주지 않아도 알아서 변수명으로 만든다.
json 생성될때 이름을 정해주고 싶으면
구조체 멤버변수 옆에 태그로써 json 규칙을 주면 되는데
문자열을 감싼것이 " ' 이런 따옴표, 어파스트로피 이런게 아니고
키보드 숫자1 키 옆에 있는 `(shift ~) 이거다 그레이브 라고 읽는다.
기본으로 이름만 주면 해당 이름으로 json key를 만드는데
`json:"-"` 로 주게 되면 json 생성시 해당 프로퍼티는 제외한다.
`json:"age,omitempty"`이런식으로 정의 하면 해당 프로퍼티가 데이터가 없는 기본 값일때
(데이터가 없을때)는 json 생성시 key,value가 만들어지지 않는다.
반대로
json 문자열을 struct 로 하는 법은
Json -> Struct
package main import ( "encoding/json" "fmt" ) type Animal struct { ID int64 `json:"id"` Types string `json:"types"` Name string `json:"name"` Sex string `json:"-"` Age int `json:"age,omitempty"` } func main() { str := "{\"id\":1,\"types\":\"CAT\",\"name\":\"CATIA\"}" ani := Animal{} json.Unmarshal([]byte(str) ,&ani) fmt.Println(ani) }
이런 식이다.
단 주의 할점은
구조체 선언할때 변수명을 반드시 대문자로 해야한다.
Golang의 규칙인데 소문자는 private , 대문자는 public 이기 때문이다.
json sdk 에서 소문자면 에러를 뿜어낸다.
태그로 정의한대로 해당 이름이 있으면 변수에 잘 넣어준다.
..
개발 포스팅을 하니깐 뭔가 어색하고 재미와 감동이 없고
쓸때없는짓 하는것 같다.
하지만 참고 . . . 이런식으로 좀 늘려보자.
댓글 없음:
댓글 쓰기