我有一个kotlin数据类OfflineDataRequestInfo
,我想使用Gson转换为Json,但它总是返回一个空对象
data class OfflineDataRequestInfo (
@SerializedName("status") val status: String,
@SerializedName("userId") val userId: String?,
@SerializedName("fulOrderId") val fulOrderId: String,
@SerializedName("timeStamp") val timeStamp: String,
@SerializedName("fulOrder") val fulOrder: String,
@SerializedName("checks") val checks: String?
)
一些值可能为null,所以我也尝试了下面的代码,它返回了{}
gson.toJson(OfflineDataRequestInfo("a","b","c","d", "e", "f"))
这是更多信息,以防万一这是一个问题@Entity
data class OfflineData (
@PrimaryKey(autoGenerate = true) val id: Int = 0,
@ColumnInfo(name="request_code") val requestCode: String?,
@Embedded
val requestInfoJson: OfflineDataRequestInfo
)
这是我的实际功能fun postFulOurderData(offlineData: OfflineData) {
if (offlineData != null) {
val mainRepository = MainRepository(ApiHelper(RetrofitBuilder.apiService))
val builder = GsonBuilder()
builder.serializeNulls()
val gson = builder.create()
launch {
val postFulOrder = mainRepository.postFulOrderOfflineData(gson.toJson(offlineData.requestInfoJson), tokenResult.access_token)
}
}
}
我还尝试过使用GsonBuilder(如上所示)以及默认的Gson,但没有运气还尝试了
gson.toJson(offlineData.requestInfoJson, OfflineDataRequestInfo::class.java)
有人可以建议我做错了什么吗您的帮助将不胜感激
谢谢
[R
最佳答案
我对Kotlin的了解不多,但是我确实知道您可以很好地将Java和Kotlin混合使用,并且由于Gson是在考虑到Java的用途的基础上开发的,因此我认为您应该使用Java。您可以创建一个Java类,然后创建如下方法:
String toJson(OfflineDataRequestInfo o) {
return new Gson().toJson(o, OfflineDataRequestInfo.class);
}
然后从Kotlin调用该方法。我并不是说您应该使用Java完成整个项目,只需将Java用于这一方法即可。
希望对您有帮助,请告诉我您是否不是这个想法:)
关于java - gson.toJson返回数据类的空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64363406/