【发布时间】:2021-05-19 03:10:18
【问题描述】:
如果我在房间数据库实体中使用 JSONObject,我会遇到问题。
@Entity(tableName = RoomDbConstant.formTable)
data class FormEntity(
@NonNull
@SerializedName("id")
@PrimaryKey(autoGenerate = false)
var formId: String,
@NonNull
@SerializedName("title")
var formTitle: String?,
@NonNull
var formCategoryId: String?,
@NonNull
var formSubCategoryId: String?,
@NonNull
var formData: String?,
@NonNull
var is_active: String? = AppConstants.ACTIVE,
@NonNull
var status: String? = AppConstants.NONE,
@NonNull
var is_sent_server: String? = AppConstants.NOT_SENT,
@NonNull
var tempEntryExisted: Boolean? = false,
@NonNull
@Embedded(prefix="FormDataEntity")
var formDataEntity: FormDataEntity?,
) : Comparable<FormEntity?> {
override fun compareTo(other: FormEntity?): Int {
return formTitle?.compareTo(other?.formTitle.toString(), ignoreCase = true)!!
}
}
data class FormDataEntity(
@Embedded
@NonNull
var response: FormFieldsEntity
)
data class FormFieldsEntity(
@NonNull
var is_active: String = AppConstants.ACTIVE,
@NonNull
@Embedded
var fields: ArrayList<FieldEntity>,
@NonNull
@SerializedName("title")
var formTitle: String,
@NonNull
@SerializedName("id")
var formId: String,
@NonNull
@SerializedName("gfpdf_form_settings")
var gfpdfFormSettings: JSONObject,
)
我有三个类第一个类是 FormEntity,它具有子类 FormDataEntity,而 FormDataEntity 类具有一个具有 JSONObject 的子类。所以我从 api 获取数据,其中有一个名为“gfpdf_form_settings”的 JSONObject。 enter image description here
所以我在通过使用 GSON 从 api 转换获取数据时在房间数据库中添加数据。
val data: FormDataEntity = Gson().fromJson(obj, FormDataEntity::class.java)
val formModel = FormEntity(formId.toString(),Utilities.separateTitle(data.response.formTitle)[0].toString()
,mCatId,mSubCatId.toString(),obj,data.response.is_active,
AppConstants.NONE,AppConstants.NOT_SENT,false,data)
But not able to do because I get error of roomdatabase.
Engineering Forms/Version 2 Room 数据库离线功能/EngineeringForm/app/build/tmp/kapt3/stubs/debug/com/app/engineeringform/controller/database/entities/formEntities/FormFieldsEntity.java:20:错误:无法弄清楚如何将此字段保存到数据库中。您可以考虑为其添加类型转换器。 私人 org.json.JSONObject gfpdfFormSettings; ^[WARN] 请求增量注释处理,但支持被禁用,因为以下处理器不是增量的:androidx.room.RoomProcessor (DYNAMIC)。
我已经尝试了各种方法,但无法找到如何在实体类中使用 JSONObject 的解决方案。
【问题讨论】:
标签: android android-room