효율적으로 JSON data를 처리하는 것은 프로그램 에러를 감소시킬 뿐 아니라 생산성도 비약적으로 향상시킬 수 있습니다.
통상 플러터에서 JSON data를 처리할 때는 decoding 해서 맵으로 변환 후 바로 처리하는 경우도 있지만 type safety와 프로그램 내에서의 처리를 쉽게 하기 위해 클래스 형태의 데이터로 변환합니다. 이를 위해 해당 클래스에는 factory constructor와 toJson method를 만들어 데이터 변환을 용이하게 합니다.
그런데 JSON 데이터의 크기가 커지거나 deeply nested가 되어 있을 경우 factory constructor와 toJson method를 만드는 작업이 굉장히 시간도 많이 걸리고 에러도 많이 유발합니다.
이번에는 이런 부담을 경감시킬 수 있는 패키지인 json_serializable 패키지에 대해 다뤄봅니다. 비교를 위해 flat data 형태로 변환하는 경우, nested class 형태로 변환하는 경우를 다룬 후 json_serializable 패키지를 적용했을 때의 장점에 대해 알아봅니다.
Source: https://github.com/lightlitebug/json_ex
예제 example을 실행하기 위해서는 openweathermap에서 key를 발급받아야 합니다(수정: https, http로 request하면 자동으로 https로 변환되어 request가 전달됩니다)
openweathermap: https://openweathermap.org/
openweathermap by city name: https://samples.openweathermap.org/da...
Flutter: https://flutter.dev/
json_serializable: https://pub.dev/packages/json_seriali...
json_annotation: https://pub.dev/packages/json_annotation
build_runner: https://pub.dev/packages/build_runner