diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt index a97fb6eb..fa6ad81a 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt @@ -990,12 +990,20 @@ object AngConfigManager { ) { try { //val gson = GsonBuilder().setPrettyPrinting().create() - //val serverList: Array = - //Gson().fromJson(server, Array::class.java) - val gson = Gson() + val gson = GsonBuilder() + .setPrettyPrinting() + .disableHtmlEscaping() + .registerTypeAdapter( // custom serialiser is needed here since JSON by default parse number as Double, core will fail to start + object : TypeToken() {}.type, + JsonSerializer { src: Double?, _: Type?, _: JsonSerializationContext? -> JsonPrimitive(src?.toInt()) } + ) + .create() + val serverList: Array = + Gson().fromJson(server, Array::class.java) + //val gson = Gson() // Assuming your JSON is an array of V2rayConfig objects - val typeToken: Type = object : TypeToken>() {}.type - val serverList: List = gson.fromJson>(server, typeToken) // Use generics for clarity + //val typeToken: Type = object : TypeToken>() {}.type + //val serverList: List = gson.fromJson>(server, typeToken) // Use generics for clarity if (serverList.isNotEmpty()) { var count = 0 @@ -1022,8 +1030,8 @@ object AngConfigManager { val config = ServerConfig.create(EConfigType.CUSTOM) config.subscriptionId = subid config.fullConfig = Gson().fromJson(server, V2rayConfig::class.java) - config.remarks = System.currentTimeMillis().toString() - // config.remarks = config.fullConfig?.remarks ?: System.currentTimeMillis().toString() + //config.remarks = System.currentTimeMillis().toString() + config.remarks = config.fullConfig?.remarks ?: System.currentTimeMillis().toString() val key = MmkvManager.encodeServerConfig("", config) serverRawStorage?.encode(key, server) return 1