Tag: 反序列化

POJO字段声明,设置为init值或null

在我的POJO中,我通常会声明这样的字段 class SampleModel { var field1: String? = null var field2: Int? = null <more fields here> } 如果我这样声明,我将需要检查该字段是否为空。 但如果这样的话: class SampleModel { var field1 = "" var field2 = 0 <more fields here> } 我可以直接使用它。 使用哪个声明有什么关系? 就记忆力,表现力而言,还是一个很好的做法? 可以说我有100个领域。 然后我使用Moshi或Gson作为解串器。

如何使用gson序列化Pair的ArrayList

我正试图反序列化一个类型的对象 ArrayList<Pair<OuterData, ArrayList<InnerData>>> 其中OuterData和InnerData是使用gson的POJO。 我已经努力了,但是我无法做到。 我正进入(状态 java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap无法转换为v2015.oasis.pilani.bits.com.home.events.inner.InnerData 每当我尝试做new Gson().fromJson(json, type); 其中type是从TypeToken使用获得的 new TypeToken<ArrayList<Pair<OuterData, ArrayList<InnerData>>>>(){}.getType() 我虽然使用类型将解决我的问题,因为最初我不想使用它,但它没有。 任何帮助表示赞赏。 编辑:这里是OuterData和InnerData类(在kotlin中) data class InnerData(val name: String, val category: String, val categoryIcon: Int, val description: String, val rules: String, val time: String, val date: String, val venue: String, val notifyState: Boolean, val notifyTime: Int, val favouriteState: Boolean) data class OuterData(val […]

在通用属性解串器中包装所有标准和自定义Jackson解串器

我正在使用杰克逊2.8并期待包装所有标准/自定义反序列化器在一个标准的包装反序列化,以便对每个属性的每个反序列化的值实例做一些后处理。 为了做到这一点,我分类了BeanDeserializerModifier ,以便将基础JsonDeserializer和给定属性类型的相应JavaType传递给JsonDeserializer的子类, StdJsonDeserializer然后调用该基本反序列化器并对结果值实例执行各种操作。 在反序列化过程中,我得到以下错误: com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.lindisfarne.MundaneDataClass: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?) 如果没有BeanDeserializerModifier ,那么这个操作当然会工作得很好 – 这显然我得到了一个不正确或不完整的反序列化器。 我怎样才能得到正确的解串器给定的类型? 完整的Kotlin代码重现以下问题: package com.lindisfarne import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.databind.* import com.fasterxml.jackson.databind.deser.BeanDeserializerModifier import com.fasterxml.jackson.databind.deser.std.StdDeserializer import com.fasterxml.jackson.module.kotlin.KotlinModule import com.fasterxml.jackson.module.kotlin.readValue class […]

Firebase映射到Kotlin-Object不起作用

我的问题是,对象“财务”的价值不会自动获取… 我的数据库屏幕截图 包含财务对象的人对象: @PaperParcel open class Person(@PropertyName("Name") var name: String, @PropertyName("Finanzen") var finances: Finances): PaperParcelable { constructor() : this("", Finances()) companion object { val CREATOR = PaperParcelPerson.CREATOR } } 没有获取的财务 – 对象: @PaperParcel open class Finances(@PropertyName("Anspruch") var credit: Double, @PropertyName("Schulden") var debts: Double, @PropertyName("Shisha") var shisha: Double, @PropertyName("Strafe") var fines: Double ): PaperParcelable { constructor() […]

在Kotlin中,FasterXML / jackson循环引用,@JsonIdentityInfo和UnresolvedForwardReference异常

我试图使用这个库和 compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-kotlin', version: '2.8.5' 我有类结构这样的点击和代码 fun main(args: Array<String>) { test() } fun test(){ val mapper = jacksonObjectMapper() val entity2 = Entity2("test_entity2") val entity1 = Entity1("test_entity1") val rootEntity1 = Entity1("root_entity1") entity2.entity1 = rootEntity1 entity1.parent = rootEntity1 entity1.entity2 = entity2 rootEntity1.entity2 = entity2 val json = mapper.writeValueAsString(entity1) println(json) val result = mapper.readValue(json, Entity1::class.java) […]

如何使用Kotlin反序列化包含DocumentReference的Firestore DocumentSnapshot

我有以下Firestore结构: 我设法使用Kotlin反序列化它,但只使用Any作为城市和活动的类型。 到目前为止,这是我的数据类: @IgnoreExtraProperties data class User ( var firstName: String, var lastName: String, var displayName: String, var birthday: Date, var memberSince: Date, var city: Any, var activities: ArrayList<Any> ) { constructor():this("", "", "", Date(), Date(), Any(), ArrayList(0)) } 这里是我如何检索数据和反序列化: DocumentReference userRef = mFirestoreDB.collection("user").document(mFirebaseUser.getUid()); userRef.addSnapshotListener(this, new EventListener<DocumentSnapshot>() { @Override public void onEvent(DocumentSnapshot documentSnapshot, FirebaseFirestoreException e) […]

Gson与Kotlin嵌套的类

我无法正确反序列化嵌套的Kotlin类作为与Gson正确的类型。 当我尝试反序列化相同的Java类时,它工作正常。 Java类: package example; import java.util.List; import java.util.Map; class TestJsonJava { Map<String, List<Entry>> outer; static class Entry { String inner; } } Kotlin课堂: package example class TestJsonKotlin { var outer: Map<String, List<Entry>>? = null class Entry { var inner: String? = null } } Kotlin主要: package example import com.google.gson.GsonBuilder class Main { companion object […]