मोशी 1.9.1 कोटलिन प्रकार को क्रमबद्ध नहीं कर सकता


12

मेरे पास मोशी 1.8.0 का उपयोग करते हुए एक काम कोड क्रमांकन / डिसेरराइजिंग डेटा है

1.9.1 में अपग्रेड करने के लिए अब क्रमबद्ध करने के प्रयास के दौरान एक दुर्घटना होती है:

java.lang.IllegalArgumentException: कोटलिन प्रकार com.xxx.Spot को क्रमबद्ध नहीं किया जा सकता है। कोटलिन-प्रतिबिंबित का उपयोग किए बिना कोटलिन वर्गों के चिंतनशील क्रमांकन में अपरिभाषित और अप्रत्याशित व्यवहार है। कृपया कोशीजॉन एडेप्टर को मोशी-कोटलिन विरूपण साक्ष्य से उपयोग करें या मोशी-कोटलिन-कोडजेन विरूपण साक्ष्य से कोड जीन का उपयोग करें।

यहाँ सीरियल कोड है:

val moshi = Moshi.Builder().build()
val dataListType = newParameterizedType(List::class.java, T::class.java)
val adapter: JsonAdapter<List<T>> = moshi.adapter(dataListType)
val json = adapter.toJson(dataList)

और संगत T वर्ग है

@IgnoreExtraProperties
data class Spot(
    var id: String = "",
    var localizedName: String? = null,
    var type: String = "",
    var location: Location? = null
)

मैं पूरी तरह से स्पष्ट हूँ कि यहाँ क्या करना है।

सहायता के लिए धन्यवाद!


हमें उस निर्भरता को दिखाएं जो आप उपयोग कर रहे हैं
coroutineDispatcher

जवाबों:


14

आपको अपने डेटा वर्ग से पहले @JsonClass (generateAdapter = true) जोड़ना होगा

@JsonClass(generateAdapter = true) 
data class Spot(
    var id: String = "",
    var localizedName: String? = null,
    var type: String = "",
    var location: Location? = null
)

2
इसकी आवश्यकता क्यों है?
मोर्टन होल्मगार्ड

5
... और अपने निर्माण में इसी kapt कॉन्फिग को शामिल करें। यहाँ विवरण: github.com/square/moshi/blob/master/README.md#kotlin
जेसी विल्सन

1
धन्यवाद, यह काम किया! @JsonClass (जेनरेट एडेप्टर = ट्रू) + को जोड़ने के लिए 'मोशी ’से' मोशी-कोटलिन’ में बदलाव को लागू करना + केप्ट ने किया ट्रिक
lorenzo

0

आप वाइल्ड कार्ड का उपयोग करके दबा सकते हैं @JvmSuppressWildcards

इस तरह

val adapter: JsonAdapter<List<@JvmSuppressWildcards T>> = moshi.adapter(dataListType)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.