Skip to content

Commit df6b46a

Browse files
author
Sylflo
committed
replace gson by moshi
1 parent 29b1efb commit df6b46a

File tree

6 files changed

+36
-26
lines changed

6 files changed

+36
-26
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ An MVP Boilerplate to save me having to create the same project over from scratc
1212
## This project uses:
1313
- [RxJava2](https://github.com/ReactiveX/RxJava) and [RxAndroid](https://github.com/ReactiveX/RxAndroid)
1414
- [Retrofit](http://square.github.io/retrofit/) / [OkHttp](http://square.github.io/okhttp/)
15-
- [Gson](https://github.com/google/gson)
15+
- [Moshi](https://github.com/square/moshi)
1616
- [Dagger 2](http://google.github.io/dagger/)
1717
- [Butterknife](https://github.com/JakeWharton/butterknife)
1818
- [Google Play Services](https://developers.google.com/android/guides/overview)

app/dependencies.gradle

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ ext {
22
versions = [
33
support : "26.0.0",
44
firebase : '11.0.4',
5+
moshi : "1.5.0",
56
okHttp : "3.8.1",
67
retrofit : '2.3.0',
78
dagger : '2.11',
@@ -54,10 +55,14 @@ ext {
5455
retrofit = [
5556
retrofit : "com.squareup.retrofit2:retrofit:$versions.retrofit",
5657
rxAdapter : "com.squareup.retrofit2:adapter-rxjava2:$versions.retrofit",
57-
gsonConverter: "com.squareup.retrofit2:converter-gson:$versions.retrofit",
58+
moshiConverter: "com.squareup.retrofit2:converter-moshi:$versions.retrofit",
5859
sqlbrite : "com.squareup.sqlbrite:sqlbrite:$versions.sqlbrite"
5960
]
6061

62+
moshi = [
63+
moshi: "com.squareup.moshi:moshi-kotlin:$versions.moshi"
64+
]
65+
6166
okHttp = [
6267
logger: "com.squareup.okhttp3:logging-interceptor:$versions.okHttp",
6368
okhttp : "com.squareup.okhttp3:okhttp:$versions.okHttp",
@@ -120,7 +125,7 @@ ext {
120125

121126
googlePlayLibs = googlePlay.values()
122127
supportLibs = supportDeps.values()
123-
networkLibs = retrofit.values() + okHttp.values()
128+
networkLibs = retrofit.values() + okHttp.values() + moshi.values()
124129
rxJavaLibs = rxJava.values()
125130
otherLibs = [butterKnife, timber, dagger, glide]
126131

app/proguard-rules.pro

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@
77
####--------Okio----------####
88
-dontwarn okio.**
99

10-
####--------Gson----------####
11-
-keepattributes Signature
12-
-keepattributes *Annotation*
13-
-keep class sun.misc.Unsafe { *; }
14-
-keep class * implements com.google.gson.TypeAdapterFactory
15-
-keep class * implements com.google.gson.JsonSerializer
16-
-keep class * implements com.google.gson.JsonDeserializer
10+
####--------Moshi---------####
11+
-dontwarn okio.**
12+
-dontwarn javax.annotation.Nullable
13+
-dontwarn javax.annotation.ParametersAreNonnullByDefault
14+
-keepclasseswithmembers class * {
15+
@com.squareup.moshi.* <methods>;
16+
}
17+
-keep @com.squareup.moshi.JsonQualifier interface *
18+
-keepclassmembers class kotlin.Metadata {
19+
public <methods>;
20+
}
1721

1822
####-----Model classes---####
1923
-keep class io.mvpstarter.sample.data.model.** { *; }
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package io.mvpstarter.sample.data.model
22

3-
import com.google.gson.annotations.SerializedName
3+
import com.squareup.moshi.Json
44

55
class Sprites {
6-
@SerializedName("front_default")
6+
@Json(name="front_default")
77
var frontDefault: String? = null
88
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package io.mvpstarter.sample.data.model
22

3-
import com.google.gson.annotations.SerializedName
3+
import com.squareup.moshi.Json
44

55
class Statistic {
66
var stat: NamedResource? = null
7-
@SerializedName("base_stat")
7+
@Json(name="base_stat")
88
var baseStat: Int = 0
9-
}
9+
}

app/src/main/java/io/mvpstarter/sample/injection/module/NetworkModule.kt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,17 @@ package io.mvpstarter.sample.injection.module
22

33
import android.content.Context
44
import com.facebook.stetho.okhttp3.StethoInterceptor
5-
import com.google.gson.FieldNamingPolicy
6-
import com.google.gson.Gson
7-
import com.google.gson.GsonBuilder
85
import com.readystatesoftware.chuck.ChuckInterceptor
6+
import com.squareup.moshi.KotlinJsonAdapterFactory
7+
import com.squareup.moshi.Moshi
98
import dagger.Module
109
import dagger.Provides
1110
import io.mvpstarter.sample.BuildConfig
1211
import okhttp3.OkHttpClient
1312
import okhttp3.logging.HttpLoggingInterceptor
1413
import retrofit2.Retrofit
1514
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
16-
import retrofit2.converter.gson.GsonConverterFactory
15+
import retrofit2.converter.moshi.MoshiConverterFactory
1716
import timber.log.Timber
1817
import javax.inject.Singleton
1918

@@ -29,11 +28,11 @@ class NetworkModule(private val context: Context) {
2928

3029
@Provides
3130
@Singleton
32-
internal fun provideRetrofit(okHttpClient: OkHttpClient, gson: Gson): Retrofit {
31+
internal fun provideRetrofit(okHttpClient: OkHttpClient, moshi: Moshi): Retrofit {
3332
return Retrofit.Builder()
3433
.baseUrl(getBaseUrl())
3534
.client(okHttpClient)
36-
.addConverterFactory(GsonConverterFactory.create(gson))
35+
.addConverterFactory(MoshiConverterFactory.create(moshi))
3736
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
3837
.build()
3938

@@ -74,13 +73,15 @@ class NetworkModule(private val context: Context) {
7473
return StethoInterceptor()
7574
}
7675

76+
7777
@Provides
7878
@Singleton
79-
internal fun provideGson(): Gson {
80-
return GsonBuilder()
81-
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
82-
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
83-
.create()
79+
internal fun provideMoshi(): Moshi {
80+
return Moshi
81+
.Builder()
82+
.add(KotlinJsonAdapterFactory())
83+
.build()
84+
8485
}
8586

8687
}

0 commit comments

Comments
 (0)