이 글에서는 Dart에서 어떻게 json 데이터를 전송하고 교환하는지에 대해 알아보겠다.
json 데이터를 클라이언트로 받아올 때 이를 모델 클래스로 만들어서 다양하게 데이터가 쓰일 수 있게 한다.
하지만, json 데이터 안의 key값이 너무 많거나 key가 리스트 형태라면 수동으로 모델 클래스를 만드는 것이 어려울 것이다. 그렇다면 Json to Dart 사이트에서 json 데이터를 넣어주고 원하는 모델 클래스 이름을 넣어주면 모델 클래스가 만들어진다!
파싱이란 json 데이터를 원하는 프로그래밍 언어나 환경에서 읽어들이고 해당 데이터를 사용할 수 있도록 하는 과정이다.
만약 json을 1개만 모델 클래스로 파싱하려면 아래와 같은 패턴으로 코드를 구현하면 된다.
Future<Todo> getTodo(int id) async {
// 요청
final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/todos/$id'));
// json String
final jsonString = response.body;
// toMap
final json = jsonDecode(jsonString);
// 모델클래스로 변환
return Todo.fromJson(json);
}
여러개의 json데이터를 파싱할 때 사용되는 패턴이다.
Future<List<Todo>> getTodos() async {
final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/todos/'));
final json = jsonDecode(response.body) as List<dynamic>;
return json.map((e) => Todo.fromJson(e)).toList();
}
json을 다루는 것이 익숙하지 않아서 버벅임이 있다. 파싱을 왜 해야하는지 이해했지만 이를 코드로 구현하고 패턴을 응용하는 과정이 낯설다. 계속 코드도 짜보고 예제도 보면서 조금씩 감각을 익혀나가야겠다.