kunfei %!s(int64=3) %!d(string=hai) anos
pai
achega
9748fed0bc

+ 0 - 21
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.os.Parcelable
 import android.text.TextUtils
 import android.text.TextUtils
 import androidx.room.*
 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.AppPattern
 import io.legado.app.constant.BookSourceType
 import io.legado.app.constant.BookSourceType
 import io.legado.app.data.entities.rule.*
 import io.legado.app.data.entities.rule.*
@@ -15,7 +12,6 @@ import io.legado.app.utils.fromJsonObject
 import io.legado.app.utils.splitNotBlank
 import io.legado.app.utils.splitNotBlank
 import kotlinx.parcelize.Parcelize
 import kotlinx.parcelize.Parcelize
 import java.io.InputStream
 import java.io.InputStream
-import java.lang.reflect.Type
 
 
 @Suppress("unused")
 @Suppress("unused")
 @Parcelize
 @Parcelize
@@ -228,7 +224,6 @@ data class BookSource(
 
 
         private val gson by lazy {
         private val gson by lazy {
             GSON.newBuilder()
             GSON.newBuilder()
-                .registerTypeAdapter(String::class.java, StringJsonDeserializer())
                 .registerTypeAdapter(ExploreRule::class.java, ExploreRule.jsonDeserializer)
                 .registerTypeAdapter(ExploreRule::class.java, ExploreRule.jsonDeserializer)
                 .registerTypeAdapter(SearchRule::class.java, SearchRule.jsonDeserializer)
                 .registerTypeAdapter(SearchRule::class.java, SearchRule.jsonDeserializer)
                 .registerTypeAdapter(BookInfoRule::class.java, BookInfoRule.jsonDeserializer)
                 .registerTypeAdapter(BookInfoRule::class.java, BookInfoRule.jsonDeserializer)
@@ -250,22 +245,6 @@ data class BookSource(
             return gson.fromJsonArray(inputStream)
             return gson.fromJsonArray(inputStream)
         }
         }
 
 
-        class StringJsonDeserializer : JsonDeserializer<String?> {
-
-            override fun deserialize(
-                json: JsonElement,
-                typeOfT: Type,
-                context: JsonDeserializationContext?
-            ): String? {
-                return when {
-                    json.isJsonPrimitive -> json.asString
-                    json.isJsonNull -> null
-                    else -> json.toString()
-                }
-            }
-
-        }
-
     }
     }
 
 
     class Converters {
     class Converters {

+ 2 - 27
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.os.Parcelable
 import android.text.TextUtils
 import android.text.TextUtils
 import androidx.room.*
 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.AppPattern
 import io.legado.app.utils.*
 import io.legado.app.utils.*
 import kotlinx.parcelize.Parcelize
 import kotlinx.parcelize.Parcelize
-import java.lang.reflect.Type
 
 
 @Parcelize
 @Parcelize
 @Entity(tableName = "rssSources", indices = [(Index(value = ["sourceUrl"], unique = false))])
 @Entity(tableName = "rssSources", indices = [(Index(value = ["sourceUrl"], unique = false))])
@@ -174,34 +170,13 @@ data class RssSource(
 
 
     @Suppress("MemberVisibilityCanBePrivate")
     @Suppress("MemberVisibilityCanBePrivate")
     companion object {
     companion object {
-        private val gson by lazy {
-            GSON.newBuilder()
-                .registerTypeAdapter(String::class.java, StringJsonDeserializer())
-                .create()
-        }
 
 
         fun fromJson(json: String): Result<RssSource> {
         fun fromJson(json: String): Result<RssSource> {
-            return gson.fromJsonObject(json)
+            return GSON.fromJsonObject(json)
         }
         }
 
 
         fun fromJsonArray(jsonArray: String): Result<List<RssSource>> {
         fun fromJsonArray(jsonArray: String): Result<List<RssSource>> {
-            return gson.fromJsonArray(jsonArray)
-        }
-
-        class StringJsonDeserializer : JsonDeserializer<String?> {
-
-            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)
         }
         }
 
 
     }
     }

+ 20 - 1
app/src/main/java/io/legado/app/utils/GsonExtensions.kt

@@ -20,6 +20,7 @@ val GSON: Gson by lazy {
             MapDeserializerDoubleAsIntFix()
             MapDeserializerDoubleAsIntFix()
         )
         )
         .registerTypeAdapter(Int::class.java, IntJsonDeserializer())
         .registerTypeAdapter(Int::class.java, IntJsonDeserializer())
+        .registerTypeAdapter(String::class.java, StringJsonDeserializer())
         .disableHtmlEscaping()
         .disableHtmlEscaping()
         .setPrettyPrinting()
         .setPrettyPrinting()
         .create()
         .create()
@@ -90,6 +91,25 @@ class ParameterizedTypeImpl(private val clazz: Class<*>) : ParameterizedType {
     override fun getActualTypeArguments(): Array<Type> = arrayOf(clazz)
     override fun getActualTypeArguments(): Array<Type> = arrayOf(clazz)
 }
 }
 
 
+/**
+ *
+ */
+class StringJsonDeserializer : JsonDeserializer<String?> {
+
+    override fun deserialize(
+        json: JsonElement,
+        typeOfT: Type,
+        context: JsonDeserializationContext?
+    ): String? {
+        return when {
+            json.isJsonPrimitive -> json.asString
+            json.isJsonNull -> null
+            else -> json.toString()
+        }
+    }
+
+}
+
 /**
 /**
  * int类型转化失败时跳过
  * int类型转化失败时跳过
  */
  */
@@ -115,7 +135,6 @@ class IntJsonDeserializer : JsonDeserializer<Int?> {
 
 
 }
 }
 
 
-
 /**
 /**
  * 修复Int变为Double的问题
  * 修复Int变为Double的问题
  */
  */