TL;DR Moshiのkotlin extensionであるKotlinJsonAdapterを使うと、 kotlinの機能であるnon-nullや、default値を考慮したJSONパースを行ってくれます。 GsonとKotlinの相性が良くない 私は普段、JSONパーサーにGsonを使っています。 Gsonに強いこだわりはありませんが、Androidでは広く使われており、ネット上に情報が豊富にあるのが使用の主な理由です。 しかし、JSONのパースした結果をKotlinのclassに入れる時に、Gsonだと都合が悪いことがわかりました。 よくない理由 Kotlinでは、propertyを宣言する時に特に何も指定しなければnon-nullになります。 non-nullなpropertyにnullを渡した場合は例外がthrowされ、classが不正な状態になることを自動で防いでくれます。
![Kotlinと相性が良いMoshiのkotlin extensionを使う - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/1f25fb6828e4cb1f76b799faf593a0889eff699f/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9S290bGluJUUzJTgxJUE4JUU3JTlCJUI4JUU2JTgwJUE3JUUzJTgxJThDJUU4JTg5JUFGJUUzJTgxJTg0TW9zaGklRTMlODElQUVrb3RsaW4lMjBleHRlbnNpb24lRTMlODIlOTIlRTQlQkQlQkYlRTMlODElODYmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTNjYzlmMTMwZGUwNGU1NTg1YzRkY2MyNjhmOTkzOTE1%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwZWd1Z3VlJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1kY2ExNzU3YWVmY2NkMGI5ZjIxZGUwNGZjMGY2MjVkMQ%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dccb73c1454c5a31ffbea2eb1534b44ea)