본문 바로가기
ETC/Flutter

[flutter] Json 파싱하기

by dkswnkk 2021. 10. 17.

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를 해준 이유는httpget() 함수가 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

댓글