Освободивание чисел строго в GSONJAVA

Программисты JAVA общаются здесь
Anonymous
Освободивание чисел строго в GSON

Сообщение Anonymous »

Я хочу строго сделать цифры GSON, например, когда GSON получает "123" и необходимо десериализировать их в int , он должен бросить исключение и не автоматически конвертировать строку в номер.

Код: Выделить всё

val str1 = """{"key":"123"}"""
Gson().fromJson(str1, intMapType) // throws an Exception

val str2 = """{"key":123}"""
Gson().fromJson(str2, intMapType) // returns valid Map
Я уже пробовал , чтобы зарегистрировать адаптеры пользовательского типа для int и string :

Код: Выделить всё

    private class StrictIntDeserializer : JsonDeserializer {
override fun deserialize(json: JsonElement, typeOfT: Type, context: JsonDeserializationContext): Int {
if (!json.isJsonPrimitive || !json.asJsonPrimitive.isNumber) {
throw JsonParseException("Expected Int but got: $json")
}
return json.asInt
}
}

private class StrictStringDeserializer : JsonDeserializer {
override fun deserialize(json: JsonElement, typeOfT: Type, context: JsonDeserializationContext): String {
if (!json.isJsonPrimitive || !json.asJsonPrimitive.isString) {
throw JsonParseException("Expected String but got: $json")
}
return json.asString
}
}

private val gson = GsonBuilder()
.registerTypeHierarchyAdapter(Int::class.java, StrictIntDeserializer())
.registerTypeHierarchyAdapter(String::class.java, StrictStringDeserializer())
.create()
Но это не работает.


Подробнее здесь: https://stackoverflow.com/questions/796 ... ly-in-gson

Вернуться в «JAVA»