본문 바로가기
Lua

[로블록스 스튜디오] HTTP 통신으로 Json 데이터 받아오기

by teamnova 2022. 9. 18.

로블록스 스튜디오에서 HTTP 통신으로 '기상청 단기예보 공공데이터'를 가져와보겠습니다.

 

local HttpService = game:GetService("HttpService")
 
 //데이터를 불러올 URL 입력
local URL_ASTROS = "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtNcst?serviceKey=본인이 발급받은 api key 입력&pageNo=1&numOfRows=1000&dataType=json&base_date=20220718&base_time=1600&nx=100&ny=90" 
 
local response = HttpService:GetAsync(URL_ASTROS)
 
-- Parse the JSON response
local data = HttpService:JSONDecode(response)

print(data) //Json으로 받아온 data를 로그로 확인해봅시다.

로그를 확인해보시면 변수 data에는 아래와 같이 담겨져있습니다.

 

 

{"response":{"header":{"resultCode":"00","resultMsg":"NORMAL_SERVICE"},"body":{"dataType":"JSON","items":{"item":[{"baseDate":"20220728","baseTime":"1600","category":"PTY","nx":100,"ny":90,"obsrValue":"0"}, {"baseDate":"20220728","baseTime":"1600","category":"REH","nx":100,"ny":90,"obsrValue":"84"},{"baseDate":"20220728","baseTime":"1600","category":"RN1","nx":100,"ny":90,"obsrValue":"0"},{"baseDate":"20220728","baseTime":"1600","category":"T1H","nx":100,"ny":90,"obsrValue":"27"},{"baseDate":"20220728","baseTime":"1600","category":"UUU","nx":100,"ny":90,"obsrValue":"0.7"},{"baseDate":"20220728","baseTime":"1600","category":"VEC","nx":100,"ny":90,"obsrValue":"347"},{"baseDate":"20220728","baseTime":"1600","category":"VVV","nx":100,"ny":90,"obsrValue":"-2.9"},{"baseDate":"20220728","baseTime":"1600","category":"WSD","nx":100,"ny":90,"obsrValue":"3.1"}]},"pageNo":1,"numOfRows":1000,"totalCount":8}}}

 

 

카테고리 PTY, REH 등에 의미는 기상청 api문서에 나와있으니 참고하시길 바랍니다.

여기서 PTY(강수 형태 : 없음,비,눈..)의 obsrValue 값을 출력해봅시다. 

obsrValue가 의미하는것은

0이면 강수형태없음

1이면 비,

2이면 비/눈

3이면 눈 

이런식으로 숫자에 따른 강수형태가 정해져있습니다. 자세한건 기상청 api문서를 참고해주세요. 

local PTY = data["response"].body.items.item[1].obsrValue
print(PTY) // 0 이 출력 된다.


tl_rain.Text = "강수형태: " .. PTY // TextLabel tl_rain에 데이터 set 해주기. //강수형태 : 0

이렇게 로그를 찍어보면 2022-07-28 16:00 시의 위도100 경도 90 위치의 PTY 값은  0 이라는걸 확인할 수 있습니다.