HTTP 통신(get)을 통한 JSON 파싱 하기
import
http 패키지 사용을 위해 import
를 해줘야 하는데 아래 코드의 1번
혹은 2번
코드로 import
해준다.
1. import 'package:http/http.dart';
2. import 'package:http/http.dart' as http;
1번
과 같이import
를 했을 경우 http 패키지 메소드들(get
,post
,put
) 을 아무런 프리픽스 없이 아래와 같은 식으로 사용해야 한다.Resonse response = await get(Uri(parse('주소'));
2번
과 같이as http
를 덧붙여import
했을 경우, 패키지의 메소드들을 사용할 때 아래와 같이 http라는 프리픽스를 붙여주어 더욱 명확하게 사용할 수 있다.http.Response response = await http.get(Uri.parse('주소'));
Json parsing
void fetchData() async {
try {
http.Response response = await http.get(
Uri.parse(
'https://samples.openweathermap.org/data/2.5/weather?q=London&appid=b1b15e88fa797225412429c1c50c122a1',
),
);
String jsonData = response.body;
var myJson = jsonDecode(jsonData)['weather'][0]['description'];
print(myJson);
} catch (e) {
print('url 정보 불러오기 실패');
}
}
위는 예제 JSON 데이터를 받아오는 코드이다.
async
를 해준 이유는http
의get()
함수가await
를 포함하고 있어, 비동기가 되기 때문이다.
String jsonData = response.body;
위 코드를 통해 get
에 해당하는 url
의 데이터를 jsonData
담아 데이터를 사용한다.
원하는 값만 파싱 하기
만약 받아온 데이터에서 원하는 값만 뽑아내어 사용하고 싶다면, dart:convert
패키지 내의 jsonDecode
함수를 사용하여 쉽게 할 수 있다.
import 'dart:convert';
먼저 위와 같이 import를 해준다.
var myJson = jsonDecode(jsonData)['weather'][0]['description'];
print(myJson);
그다음 위와 같이 작성하여 원하는 값만 뽑아온다.
'ETC > Flutter' 카테고리의 다른 글
[flutter] BottomNavigationBar 사용하기 (0) | 2021.10.17 |
---|---|
[flutter] Tabbar 구현하기 (0) | 2021.10.17 |
[flutter] XML 파싱하기 (0) | 2021.10.17 |
[flutter] Json이란 무엇인가? (0) | 2021.10.17 |
[flutter] Future 와 async를 사용해보자. (0) | 2021.10.17 |
[flutter] Future란 무엇인가? (3) | 2021.10.17 |
댓글