List 我可以将Moshi@JsonQualifier应用于类型参数吗?
我需要通过List 我可以将Moshi@JsonQualifier应用于类型参数吗?,list,generics,adapter,moshi,qualifiers,List,Generics,Adapter,Moshi,Qualifiers,我需要通过JsonQualifier注释为BigDecimal定义JsonAdapter,并在列表中的项目上使用它 @JsonQualifier @Target(AnnotationTarget.TYPE) @Retention(AnnotationRetention.RUNTIME) annotation class JsonCoordinates 这是完整的代码 @JsonClass(generateAdapter = true) data class LocationData(
JsonQualifier
注释为BigDecimal
定义JsonAdapter
,并在列表中的项目上使用它
@JsonQualifier
@Target(AnnotationTarget.TYPE)
@Retention(AnnotationRetention.RUNTIME)
annotation class JsonCoordinates
这是完整的代码
@JsonClass(generateAdapter = true)
data class LocationData(
val coordinates: List<@JvmSuppressWildcards @JsonCoordinates BigDecimal>
)
class LocationDataAdapterTest {
@Test
fun toJsonWithQualifier() {
val moshi: Moshi
val adapter: JsonAdapter<LocationData>
moshi = Moshi.Builder()
.add(BigDecimal::class.java, JsonCoordinates::class.java,
DecimalAdapter())
.build()
adapter = moshi.adapter(LocationData::class.java)
val data = LocationData(listOf(BigDecimal(10), BigDecimal(20)))
assertEquals("{\"coordinates\":[\"10\",\"20\"]}", adapter.toJson(data))
}
@Test
fun toJsonWithoutQualifier() {
val moshi: Moshi
val adapter: JsonAdapter<LocationData>
moshi = Moshi.Builder()
.add(BigDecimal::class.java, DecimalAdapter())
.build()
adapter = moshi.adapter(LocationData::class.java)
val data = LocationData(listOf(BigDecimal(10), BigDecimal(20)))
assertEquals("{\"coordinates\":[\"10\",\"20\"]}", adapter.toJson(data))
}
}
java.lang.IllegalArgumentException: Platform class java.math.BigDecimal (with no annotations) requires explicit JsonAdapter to be registered
for class java.math.BigDecimal
for java.util.List<java.math.BigDecimal> coordinates
for class app.klosed.api.model.LocationData