직렬화란 데이터를 앱 외부에 저장하거나 네트워크로 전송할 때 데이터를 정해진 포맷의 바이트코드로 전환하는 것을 말한다. 또한 직렬화된 바이트코드를 다시 데이터로 전환하는 것을 역직렬화라 한다. 직렬화/역직렬화 개념
직렬화에는 여러 가지 형태가 있는데, 대표적으로 사용되는 것이 JSON string 형태이다. JSON 말고도 XML이나 CSV 형태도 있지만 요즘엔 거의 JSON이 표준으로 굳어졌다. 다른 플랫폼이나 언어를 쓰는 서버 혹은 클라이언트에 데이터를 보내야 한다면 고민할 것 없이 JSON으로 직렬화를 하면 된다. 이때 쓰는 직렬화 라이브러리가 Gson이다. Java의 JSONObject 라이브러리를 사용할 수도 있지만 편의성 면에서 Gson이 낫다.
안드로이드 앱 안에서 컴포넌트 간에 데이터를 전송할 때 Intent를 쓸 수 있다. Intent로 객체를 전송할 때는 객체를 Bundle이라는 맵 객체로 감싸야 하는데, Bundle에 넣을 수 있는 자료형 중 Parcelable이 가장 좋은 퍼포먼스를 낼 수 있기 때문에 널리 쓰인다. Parcelable은 Android SDK에서 제공하는 인터페이스로, 객체를 Parcel이라는 직렬화용 객체로 바꾸거나 그 반대 작업을 수행하여 객체의 직렬화/역직렬화를 돕는 기능을 한다. 보일러플레이트 코드가 많다는 단점이 있었지만 @Parcelize 를 쓰면 그 단점도 없어진다. 자세한 것은 링크 참고.