Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 我可以将Moshi@JsonQualifier应用于类型参数吗?_List_Generics_Adapter_Moshi_Qualifiers - Fatal编程技术网

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