如何从 API 的模型响应中应用 "Any" 类型的 TypeConverter?
How to apply TypeConverter of type "Any" from Model Response from API?
我正在使用 https://www.themealdb.com/api.php 作为我的 API。
现在,当我尝试从 JSON 生成 class 时,某些字段的类型为“Any”。
我如何为此应用 TypeConverter?
这是膳食的生成数据class:
@Entity(
tableName = "meals"
)
data class Meal(
@PrimaryKey(autoGenerate = true)
val id : Int? = null,
val dateModified: Any,
val idMeal: String,
val strArea: String,
val strCategory: String,
val strCreativeCommonsConfirmed: Any,
val strDrinkAlternate: Any,
val strImageSource: Any,
val strIngredient1: String,
val strIngredient10: String,
val strIngredient11: String,
val strIngredient12: String,
val strIngredient13: String,
val strIngredient14: String,
val strIngredient15: String,
val strIngredient16: String,
val strIngredient17: String,
val strIngredient18: String,
val strIngredient19: String,
val strIngredient2: String,
val strIngredient20: String,
val strIngredient3: String,
val strIngredient4: String,
val strIngredient5: String,
val strIngredient6: String,
val strIngredient7: String,
val strIngredient8: String,
val strIngredient9: String,
val strInstructions: String,
val strMeal: String,
val strMealThumb: String,
val strMeasure1: String,
val strMeasure10: String,
val strMeasure11: String,
val strMeasure12: String,
val strMeasure13: String,
val strMeasure14: String,
val strMeasure15: String,
val strMeasure16: String,
val strMeasure17: String,
val strMeasure18: String,
val strMeasure19: String,
val strMeasure2: String,
val strMeasure20: String,
val strMeasure3: String,
val strMeasure4: String,
val strMeasure5: String,
val strMeasure6: String,
val strMeasure7: String,
val strMeasure8: String,
val strMeasure9: String,
val strSource: String,
val strTags: Any,
val strYoutube: String
)
与其他 API 不同,示例 (NewsAPI) 它生成了自定义 class 类型的 Source,然后从那里,我可以轻松提供一个转换器。
Any
是 kotlin
中的超级 class,这意味着 kotlin
中的每个 class 都有 Any
作为父 class
open class Any (Common source) (Native source)
The root of the Kotlin class hierarchy. Every Kotlin class has Any as
a superclass.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/
如果你熟悉Java
,那么Java
中的Object
几乎是一样的。
通常,自动生成器将类型标记为 Kotlin
中的 Any
或 Java
中的 Object
,用于他们在确定类型时遇到问题的字段。您可以自己替换这些字段
例如
val strImageSource: Any => val strImageSource: String
如果您仍然需要一个转换器,假设您收到的日期字段为“24/01/2001”,但想将其保存为长,您必须根据规范编写转换器您的网络图书馆。如果您使用 Retrofit(一种流行的 network/HTTP 客户端),here is a documentation 以及有关自定义转换器的详细信息
我正在使用 https://www.themealdb.com/api.php 作为我的 API。 现在,当我尝试从 JSON 生成 class 时,某些字段的类型为“Any”。 我如何为此应用 TypeConverter?
这是膳食的生成数据class:
@Entity(
tableName = "meals"
)
data class Meal(
@PrimaryKey(autoGenerate = true)
val id : Int? = null,
val dateModified: Any,
val idMeal: String,
val strArea: String,
val strCategory: String,
val strCreativeCommonsConfirmed: Any,
val strDrinkAlternate: Any,
val strImageSource: Any,
val strIngredient1: String,
val strIngredient10: String,
val strIngredient11: String,
val strIngredient12: String,
val strIngredient13: String,
val strIngredient14: String,
val strIngredient15: String,
val strIngredient16: String,
val strIngredient17: String,
val strIngredient18: String,
val strIngredient19: String,
val strIngredient2: String,
val strIngredient20: String,
val strIngredient3: String,
val strIngredient4: String,
val strIngredient5: String,
val strIngredient6: String,
val strIngredient7: String,
val strIngredient8: String,
val strIngredient9: String,
val strInstructions: String,
val strMeal: String,
val strMealThumb: String,
val strMeasure1: String,
val strMeasure10: String,
val strMeasure11: String,
val strMeasure12: String,
val strMeasure13: String,
val strMeasure14: String,
val strMeasure15: String,
val strMeasure16: String,
val strMeasure17: String,
val strMeasure18: String,
val strMeasure19: String,
val strMeasure2: String,
val strMeasure20: String,
val strMeasure3: String,
val strMeasure4: String,
val strMeasure5: String,
val strMeasure6: String,
val strMeasure7: String,
val strMeasure8: String,
val strMeasure9: String,
val strSource: String,
val strTags: Any,
val strYoutube: String
)
与其他 API 不同,示例 (NewsAPI) 它生成了自定义 class 类型的 Source,然后从那里,我可以轻松提供一个转换器。
Any
是 kotlin
中的超级 class,这意味着 kotlin
中的每个 class 都有 Any
作为父 class
open class Any (Common source) (Native source)
The root of the Kotlin class hierarchy. Every Kotlin class has Any as a superclass. https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/
如果你熟悉Java
,那么Java
中的Object
几乎是一样的。
通常,自动生成器将类型标记为 Kotlin
中的 Any
或 Java
中的 Object
,用于他们在确定类型时遇到问题的字段。您可以自己替换这些字段
例如
val strImageSource: Any => val strImageSource: String
如果您仍然需要一个转换器,假设您收到的日期字段为“24/01/2001”,但想将其保存为长,您必须根据规范编写转换器您的网络图书馆。如果您使用 Retrofit(一种流行的 network/HTTP 客户端),here is a documentation 以及有关自定义转换器的详细信息