잠시만 기다려 주세요

     '왜 이재명은 자꾸만 국민들 보고 길바닥에 나가라고 하는 건가.. 정작 당신들은 뜨뜻한 곳에서 입만 나불거리고 있으면서...'
전체검색 :  
이번주 로또 및 연금번호 발생!!   |  HOME   |  여기는?   |  바다물때표   |  알림 (19)  |  여러가지 팁 (1095)  |  추천 및 재미 (163)  |  자료실 (28)  |  
시사, 이슈, 칼럼, 평론, 비평 (795)  |  끄적거림 (142)  |  문예 창작 (719)  |  바람 따라 (75)  |  시나리오 (760)  |  드라마 대본 (248)  |  
살인!


    golang

golang - json 사용하기
이 름 : 바다아이   |   조회수 : 10260         짧은 주소 : https://www.bada-ie.com/su/?581591781238

1. JSON

JSON (JavaScript Object Notation)은 데이타를 교환하는 한 포맷으로서 그 단순함과 유연함 때문에 널리 사용되고 있다. 특히 웹 브라우져와 웹서버 사이에 데이타를 교환하는데 많이 사용되고 있다. JSON 포맷은 기본적으로 Key-Value Pair의 컬렉션이다.

Go 에서 JSON을 사용하기 위해서는 표준패키지 encoding/json 을 사용하면 된다. 표준패키지는 https://golang.org/pkg/ 에 모두 자세히 설명되어 있는데, 이 중 JSON 관련 패키지는 https://golang.org/pkg/encoding/json/ 에서 참조할 수 있다.

2. JSON 인코딩

Go 데이타를 JSON 포맷으로 변환(인코딩)하기 위해서는 encoding/json 패키지의 Marshal() 함수를 사용한다. 흔히 Go 구조체 혹은 map 데이타를 JSON으로 인코딩하게 되는데, 해당 Go 데이타 값을 json.Marshal()의 파라미터로 전달하면, JSON으로 인코딩된 바이트배열과 에러객체를 리턴한다. 만약 JSON으로 인코딩된 바이트배열을 다시 문자열로 변경할 필요가 있다면, string(바이트배열)과 같이 변경할 수 있다.

한가지 유의할 점은 JSON의 Key는 문자열이어야 한다. Go 구조체의 경우 자동으로 필드명을 문자열로 사용하게 되지만, map인 경우는 map[string]T 처럼 Key가 string인 map만 지원한다 (Value T는 어느 타입이든 상관 없음).
 

package main
 
import (
    "encoding/json"
    "fmt"
)
 
//Member -
type Member struct {
    Name   string
    Age    int
    Active bool
}
 
func main() {
 
    // Go 데이타
    mem := Member{"Alex", 10, true}
 
    // JSON 인코딩
    jsonBytes, err := json.Marshal(mem)
    if err != nil {
        panic(err)
    }
 
    // JSON 바이트를 문자열로 변경
    jsonString := string(jsonBytes)
 
    fmt.Println(jsonString)
}
 

3. JSON 디코딩

JSON으로 인코딩된 데이타를 다시 디코딩하기 위해서는 encoding/json 패키지의 Unmarshal() 함수를 사용한다. Unmarshal() 함수의 첫번째 파라미터에는 JSON 데이타를, 두번째 파라미터에는 출력할 구조체(혹은 map)를 포인터로 지정한다. 리턴값은 에러객체이고, 에러가 없을 경우, 두번째 파라미터에 원래 데이타가 복원된다.
 

func main() {
    // 테스트용 JSON 데이타
    jsonBytes, _ := json.Marshal(Member{"Tim", 1, true})
 
    // JSON 디코딩
    var mem Member
    err := json.Unmarshal(jsonBytes, &mem)
    if err != nil {
        panic(err)
    }
 
    // mem 구조체 필드 엑세스
    fmt.Println(mem.Name, mem.Age, mem.Active)
}
 

JSON 디코딩에서 만약 매칭되는 필드가 구조체에 없다면, 그 값은 무시되고 계속 처리된다. 즉, JSON에 10개의 Key-Value Pair가 있는데, 출력 구조체는 그 중 3개 필드만 가지고 있다면, 3개 필드만 채워지고, 나머지 키값들은 무시된다.

또한 Go의 json 패키지는 출력 구조체나 map을 미리 정의하지 않고 디코딩할 수도 있다.


출처 : http://golang.site/go/article/104-JSON-%EC%82%AC%EC%9A%A9

 

| |





      1 page / 6 page
번 호 카테고리 제 목 이름 조회수
180 golang golang ... 바다아이 119
179 golang golang , ... 바다아이 2700
178 golang golang , map . 바다아이 2088
177 golang Golang (, , data ) , ... 바다아이 2403
176 golang golang sort ... 바다아이 2788
175 golang golang html.EscapeString html.UnescapeString input value ... 바다아이 2708
174 golang golang go.mod go.sum . GOPATH SRC not module, 1.16 . 바다아이 6231
173 golang go 1.16 ... is not in GOROOT.. GOPATH .... . 바다아이 7385
172 golang , String Formatting 바다아이 8699
171 golang rand.Intn , random, , . 바다아이 8218
170 golang golang ... 바다아이 11976
169 golang golang gopath, goroot .. golang 바다아이 8948
168 golang golang ... Force download file example 바다아이 10973
167 golang golang , , cpu, memory, disk 바다아이 12036
166 golang golang , ... GOOS, GOARCH 바다아이 9695
165 golang golang checkbox ... 바다아이 9555
164 golang golang , , http .... 바다아이 9377
163 golang golang nil , nil , nil ... 바다아이 9458
162 golang 2 golang, go , .... golang .... 바다아이 12704
161 golang golang postgresql, mysql, mariadb ... ` Grave () .. .. 바다아이 10016
160 golang golang postgresql mysql, mariadb scan , null .. 바다아이 10077
159 golang golang , iconv 바다아이 12893
158 golang golang quote escape, unquote 바다아이 10319
157 golang golang , http errorLog , , ... 바다아이 10702
156 golang golang interface , 바다아이 9777
155 golang golang struct .... 바다아이 10502
154 golang golang map map , 바다아이 9985
153 golang golang map .... .... 바다아이 9309
152 golang golang slice copy 바다아이 9500
151 golang golang goto 바다아이 10692
| |









Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ Ubuntu + GoLang + PostgreSQL + Mariadb ]
서버위치 : 오라클 클라우드 춘천  실행시간 : 0.15474
to webmaster... gogo sea. gogo sea.