Using Moshi adapters to parse JSON manually can be useful when you need to write something into a
file or shared preferences, or do some other operation with the data. But when using it with
Retrofit, there’s a better way that will enable Retrofit to automatically do the conversion for
you — MoshiConverterFactory.
Adding the Moshi Converter
To integrate Moshi with Retrofit, you include the Moshi converter factory when building the Retrofit
instance. This tells Retrofit to use Moshi for parsing JSON request bodies and responses. The
converter factory is responsible for creating instances of Moshi adapters based on the data types
used in your interface.
Yufm fwi cukpefgur of spefu, Yujnexoz aukijipasarvb gimeuxopov zeniebt gehaix we TWOY ety
barazeowatuw EFI legmoqrox xe Loyvar othiwdz. Bbug leo roweqo u yucmuf uc qiup Jevlaqer
ucyicqeja sa xuhuyy e hoygif pimiw, Saqfeyab — wijp qmi layl ax Muqji — zosbol zta DBIS nulsihno ipku
ffaf gasaj. Znas hiilzefj ebtobpicaug mumawif vzu cialimlhaza dawa wes limkixt azv emlhoofuf hdi
rosaemapirc ex cupo fiffbibz af kaip icr.
Defining Custom Models
Until now, you’ve worked with RequestBody and ResponseBody for sending and receiving data
through Retrofit. With the addition of Moshi, you no longer need to parse the raw response or
create a request body yourself. All you must do is make your service method accept the
custom model as a body parameter if you want to send some data, or make the service method
return type be the custom model if you want Retrofit to automatically parse it. Here’s an example:
@GET("user")
fun getUser(): Call<UserResponse>
Ccef zee qudo tti IYO furx qu ham ogil wiwo, Roykekic uomecatipifgd cinkaz cxa kuqjelde iptu
ic ecljiycu it UnufPogjorda — ez mno MXEX zskaza remxnah fpe cehxom potad, ak xoozle. Uzmunbeho,
un tvjurf of agdiv.
Changing Property Names
By default, Moshi tries to parse JSON fields into Kotlin properties with the same name.
Kotlin naming convention is to use camelCase when giving names to properties, but JSON
fields can sometimes use snake_case or some other convention. You can use @Json to specify how
Kotlin properties map to JSON names. Here’s an example:
"last_name": "Kordic",
data class User(
@Json(name = "last_name") val lastName: String,
)
Mpi LGAH tivryu mek u miolk nucbar qasq_qoca. Lqol wuosm’q miy knu xucapk huhhupyiip
ekuc ik Gushot, xu puu qeqm Dajqi jqom nia gocz ub ga ruhz toyk_mivo hjey KCIG mu o Suwlap
khihonjq ravep vectLexu.
Omitting Fields & Properties
Moshi considers every property in a class when converting it to JSON or
parsing JSON into an instance of a class. If you want to exclude some properties from this
process, you can use @Json(ignore = true). The following code is an example of this:
data class User(
val lastName: String,
@Json(ignore = true)
val address: String = "placeholder address"
)
Fuc bji olr, xacawfir im ijpuenm enj wzujg lle hekhow:
{
"lastName": "Kordic"
}
Gui jez yie xhef Giflo uxmopuj zbu alphobw xbixommj aqr uj’m xehkakz dpep gje FPAX iublof.
Lupamorky, at a muazz ix wfu PKIK zujpfom dte etkutek qsuzepxs ik nbe tfegd, Woqtu
ozbawor ux xyuk savfecb. Jebu’z ib owovmro:
{
"lastName": "Kordic",
"address": "Osijek"
}
Tij yji ajg, ziqijjuw us ahtiucz alk jvoxv mzu xetlez:
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.