From 9412c7f2d29e56538eff8869e107f9b5145f8017 Mon Sep 17 00:00:00 2001 From: kunfei Date: Tue, 21 Mar 2023 22:10:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/data/entities/BookSource.kt | 21 -------------- .../io/legado/app/data/entities/RssSource.kt | 29 ++----------------- .../io/legado/app/utils/GsonExtensions.kt | 21 +++++++++++++- 3 files changed, 22 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/entities/BookSource.kt b/app/src/main/java/io/legado/app/data/entities/BookSource.kt index a5f867d20..a89751db0 100644 --- a/app/src/main/java/io/legado/app/data/entities/BookSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BookSource.kt @@ -3,9 +3,6 @@ package io.legado.app.data.entities import android.os.Parcelable import android.text.TextUtils import androidx.room.* -import com.google.gson.JsonDeserializationContext -import com.google.gson.JsonDeserializer -import com.google.gson.JsonElement import io.legado.app.constant.AppPattern import io.legado.app.constant.BookSourceType import io.legado.app.data.entities.rule.* @@ -15,7 +12,6 @@ import io.legado.app.utils.fromJsonObject import io.legado.app.utils.splitNotBlank import kotlinx.parcelize.Parcelize import java.io.InputStream -import java.lang.reflect.Type @Suppress("unused") @Parcelize @@ -228,7 +224,6 @@ data class BookSource( private val gson by lazy { GSON.newBuilder() - .registerTypeAdapter(String::class.java, StringJsonDeserializer()) .registerTypeAdapter(ExploreRule::class.java, ExploreRule.jsonDeserializer) .registerTypeAdapter(SearchRule::class.java, SearchRule.jsonDeserializer) .registerTypeAdapter(BookInfoRule::class.java, BookInfoRule.jsonDeserializer) @@ -250,22 +245,6 @@ data class BookSource( return gson.fromJsonArray(inputStream) } - class StringJsonDeserializer : JsonDeserializer { - - override fun deserialize( - json: JsonElement, - typeOfT: Type, - context: JsonDeserializationContext? - ): String? { - return when { - json.isJsonPrimitive -> json.asString - json.isJsonNull -> null - else -> json.toString() - } - } - - } - } class Converters { diff --git a/app/src/main/java/io/legado/app/data/entities/RssSource.kt b/app/src/main/java/io/legado/app/data/entities/RssSource.kt index 20a5c6647..95184d7e6 100644 --- a/app/src/main/java/io/legado/app/data/entities/RssSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/RssSource.kt @@ -3,13 +3,9 @@ package io.legado.app.data.entities import android.os.Parcelable import android.text.TextUtils import androidx.room.* -import com.google.gson.JsonDeserializationContext -import com.google.gson.JsonDeserializer -import com.google.gson.JsonElement import io.legado.app.constant.AppPattern import io.legado.app.utils.* import kotlinx.parcelize.Parcelize -import java.lang.reflect.Type @Parcelize @Entity(tableName = "rssSources", indices = [(Index(value = ["sourceUrl"], unique = false))]) @@ -174,34 +170,13 @@ data class RssSource( @Suppress("MemberVisibilityCanBePrivate") companion object { - private val gson by lazy { - GSON.newBuilder() - .registerTypeAdapter(String::class.java, StringJsonDeserializer()) - .create() - } fun fromJson(json: String): Result { - return gson.fromJsonObject(json) + return GSON.fromJsonObject(json) } fun fromJsonArray(jsonArray: String): Result> { - return gson.fromJsonArray(jsonArray) - } - - class StringJsonDeserializer : JsonDeserializer { - - override fun deserialize( - json: JsonElement, - typeOfT: Type?, - context: JsonDeserializationContext? - ): String? { - return when { - json.isJsonPrimitive -> json.asString - json.isJsonNull -> null - else -> json.toString() - } - } - + return GSON.fromJsonArray(jsonArray) } } diff --git a/app/src/main/java/io/legado/app/utils/GsonExtensions.kt b/app/src/main/java/io/legado/app/utils/GsonExtensions.kt index 1b5af4ca7..f42bbab31 100644 --- a/app/src/main/java/io/legado/app/utils/GsonExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/GsonExtensions.kt @@ -20,6 +20,7 @@ val GSON: Gson by lazy { MapDeserializerDoubleAsIntFix() ) .registerTypeAdapter(Int::class.java, IntJsonDeserializer()) + .registerTypeAdapter(String::class.java, StringJsonDeserializer()) .disableHtmlEscaping() .setPrettyPrinting() .create() @@ -90,6 +91,25 @@ class ParameterizedTypeImpl(private val clazz: Class<*>) : ParameterizedType { override fun getActualTypeArguments(): Array = arrayOf(clazz) } +/** + * + */ +class StringJsonDeserializer : JsonDeserializer { + + override fun deserialize( + json: JsonElement, + typeOfT: Type, + context: JsonDeserializationContext? + ): String? { + return when { + json.isJsonPrimitive -> json.asString + json.isJsonNull -> null + else -> json.toString() + } + } + +} + /** * int类型转化失败时跳过 */ @@ -115,7 +135,6 @@ class IntJsonDeserializer : JsonDeserializer { } - /** * 修复Int变为Double的问题 */