Tag: 杰克逊模块

注册反序列化器以包装类型的List

我有这样的JSON: { "apps": [ { "id": "1", … }, { "id": "2", … } ] } 例如说, Application类看起来像这样 data class Application( val id: String ) 我想将JSON反序列化为List<Application> ,其中每个{…}都是一个Application 。 我希望能够做到这一点,而不必创建一个类似Applications的包装类,用@JsonRootName对其进行@JsonRootName ,然后启用DeserializationFeature.UNWRAP_ROOT_VALUE 。 最终目标是有一个类似于以下内容的Retrofit界面: @GET("api/apps") fun listApplications(): Call<List<Application>> 我试图实现一个简单的JsonDeserializer (可能可以优化): class ApplicationListDeserializer : JsonDeserializer<List<Application>>() { companion object { private val COLLECTION_TYPE: CollectionType = TypeFactory.defaultInstance() .constructCollectionType(List::class.java, Application::class.java) } […]

在Kotlin中,为什么杰克逊在某些情况下未能解组未注释的对象,而不是在其他情况下

我使用Kotlin和Jongo来访问MongoDB。 Jongo使用Jackson来序列化/反序列化对象,以便从MongoDB保存和读取它们。 我使用Jackson-Kotlin模块来帮助使用构造函数序列化Kotlin数据类。 下面是一个序列化好的数据类的例子: data class Workflow ( @field:[MongoId MongoObjectId] @param:MongoId var id: String? = null, val name: String, val states: Map<String, State> ) 下面是一个不能反序列化的类的例子: data class Session ( @field:[MongoObjectId MongoId] @param:MongoId var id: String? = null, var status: CallStatus, var currentState: String, var context: MutableMap<String, Any?>, val events: MutableMap<String, Event> ) Jongo抛出了以下例外,因为Jackson的反序列化失败了: org.jongo.marshall.MarshallingException: Unable […]