티스토리 뷰

안녕하세요, 간단한 프로젝트를 진행하고 있습니다. 원래는 Discord Bot을 이용하면서 기본적인 코드를 연습하기 좋아서 Discord Bot + 코로나19 API를 이용하여서 재밌는 프로젝트를 하고 있습니다.

package main

import (
	"fmt"
	"github.com/thedevsaddam/gojsonq"
	"io/ioutil"
	"net/http"
)

func main()  {
	COVID19_KR_URL := "https://api.corona-19.kr/korea/?serviceKey=API KEY"
	resp, err := http.Get(COVID19_KR_URL)
	if err != nil {
		panic(err)
	}

	defer resp.Body.Close()

	data, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Printf("%s\n", string(data))

	JSON_Result := gojsonq.New().FromString(string(data)).Find("TotalCase")
	fmt.Println(JSON_Result)
}

사용하는 Package는 다양합니다. 기본적으로 Go에서 지원하는 기본 Package를 사용하였습니다.

map과 struct를 이용하여서 하는 방법도 있지만 더 간편하고 편하게 하기 위해서 gojsonq Package를 사용하였습니다.

일단 코드 리뷰를 진행하겠습니다!

import (
	"fmt"
    	// go get github.com/thedevsaddam/gojsonq/v2
	"github.com/thedevsaddam/gojsonq"
	"io/ioutil"
	"net/http"
)

일단 gojsonq Package를 go get 명령어를 통해서 Package를 설치해 주시면 됩니다!

설치가 다 되셨다면, import 해 주시면 됩니다.

그 후 API 요청에 대해서 설명 드리겠습니다.

func main()  {
	COVID19_KR_URL := "https://api.corona-19.kr/korea/?serviceKey=API KEY"
	resp, err := http.Get(COVID19_KR_URL)
	if err != nil {
		panic(err)
	}

	defer resp.Body.Close()

	data, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Printf("%s\n", string(data))

	JSON_Result := gojsonq.New().FromString(string(data)).Find("TotalCase")
	fmt.Println(JSON_Result)
}

COVID19_KR_URL은 Corona19 API를 요청하는 변수입니다.

그리고 나서 http.Get 코드를 사용하여서 API에 GET 요청을 해 주시면 됩니다.

ReadAll로 resp.body를 해 주시면 됩니다. string(data)를 통해서 data를 문자열로 변환해 주시면 됩니다.

JSON_Result는 gojsonq를 사용하여서 JSON 핸들링 라이브러리를 통해서 API에 요청한 결과에 대해서 특정 값을 출력할 수 있습니다.

string(data)를 해 주셔야지만 변환되어서 특정값을 추출할 수 있습니다.

그리고 요청한 값을 출력하게 됩니다.

아직 코드를 깨끗하게 작성하는 방법에 대해서 많이 부족합니다. 오늘은 JSON에서 어떻게 특정값을 가져올 수 있는지에 대해서 알아 보았습니다!

'Golang > 개발 일기' 카테고리의 다른 글

[Go] API JSON 결과값에 특정값을 추출해 보자!  (0) 2021.04.07
댓글
댓글쓰기 폼