java - gson.toJson返回数据类的空对象

标签 java android json kotlin gson

我有一个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/

相关文章:

java - 如何在屏幕上的特定位置设置 View ?

java - java中的父/子构造函数

java - 将 C++ 项目迁移到 Java,保护实现细节

java - 集群环境中 JMS 主题的 HTTP 使用者

java - 在json对象中读取json数组

json - Jmeter json 路径提取器 - 如何从提取的值中删除 []

java - 如何向 Soap 服务发送数据?

php - 从安卓手机发布到服务器

更改字体后的 Android 字体样式不起作用

javascript - 从位置字符串创建 JSON 对象