square/moshi ↗
Created Mar 2, 2022 · View the square/moshi repository page
A modern JSON library for Kotlin and Java.
Want this for your repo?
Render a free sample of any GitHub repo in seconds.
Contributors
79
Lines of Code
2,744
From
Aug 9, 2014
To
Jan 23, 2022
About square/moshi
Moshi is a modern JSON parsing and serialization library for Android, Java, and Kotlin developed by Square. It simplifies converting JSON data into Java and Kotlin objects and vice versa, with built-in support for common types like primitives, collections, strings, and enums. The library is built on top of Okio for efficient I/O operations.
The library emphasizes simplicity and safety over configurability, deliberately omitting certain features found in competing libraries like Gson. It refuses to serialize platform types without explicit user-provided adapters to prevent accidental coupling to specific JDK or Android versions. Moshi provides annotation-based customization through features like @Json for field name mapping, @JsonQualifier for type-specific encoding variants, and @ToJson/@FromJson methods for custom type adapters. It also includes convenience wrapper methods for adapters such as nullSafe(), nonNull(), and failOnUnknown().
For Kotlin users, Moshi offers two distinct approaches: a reflection-based adapter via KotlinJsonAdapterFactory and a compile-time code generation system using Kotlin Symbol Processor (KSP). The codegen approach is faster and eliminates the kotlin-reflect dependency, while reflection provides greater flexibility including support for private properties. Both methods produce identical JSON output, allowing developers to choose based on performance requirements and use case needs.