使用gson将JSON字符串解析为数据类的Kotlin vert.x始终返回null

使用gson将JSON字符串解析为数据类的Kotlin vert.x始终返回null,kotlin,gson,vert.x,Kotlin,Gson,Vert.x,我只是在玩vert.x3.5.3Kotlin,无法使用gson将JSON字符串解析为数据类 这是密码 类DataVerticle:AbstractVerticle(){ 覆盖乐趣开始(开始未来:未来){ 数据类产品( @SerializedName(“id”)val id:Int, @SerializedName(“名称”)val名称:字符串, @SerializedName(“productCode”)val productCode:字符串 ) val产品:MutableList=mutab

我只是在玩vert.x3.5.3Kotlin,无法使用gson将JSON字符串解析为数据类

这是密码


类DataVerticle:AbstractVerticle(){
覆盖乐趣开始(开始未来:未来){
数据类产品(
@SerializedName(“id”)val id:Int,
@SerializedName(“名称”)val名称:字符串,
@SerializedName(“productCode”)val productCode:字符串
)
val产品:MutableList=mutableListOf()
val gson=gson()
val eventBus=vertx.eventBus()
eventBus.consumer(“data.verticle”){
当(it.headers().get(“操作”)){
“添加产品”->{
val prodJson=it.body()
if(prodJson!=null){
println(prodJson)
val product=gson.fromJson(prodJson,product::class.java)
println(产品)
it.回复(“成功”)
}
}
其他->{
打印(“错误”)
}
}
}
startFuture.complete()
}
}
问题是解析后的值总是空的 这是我的示例json->

{“id”:1,“name”:“SOAP”,“productCode”:“P101”}
通过eventBus发送的json字符串不为空。 我正在为gson使用此软件包 com.google.code.gson',版本:“2.8.5”


谢谢你在方法体中声明了你的类,这是Gson不太喜欢的

将其提取为嵌套类将很好地工作:

类DataVerticle:AbstractVerticle(){ 覆盖乐趣开始(开始未来:未来){ val gson=gson()


谢谢,这是可行的,但是我使用了另一个名为Kalxon的库来解析JSON,它工作得很好。这是Gson特有的警告吗?我认为这与Gson对Kotlin特性的了解较少有关。
    val eventBus = vertx.eventBus()
    eventBus.consumer<String>("data.verticle") {
        when (it.headers().get("ACTION")) {
            "ADD_PRODUCT" -> {
                val prodJson = it.body()
                if (prodJson != null) {
                    println(prodJson)
                    val product = gson.fromJson(prodJson, Product::class.java)
                    println(product)
                    it.reply("SUCCESS")
                }
            }
            else -> {
                print("ERROR")
            }
        }
    }
    startFuture.complete()
}

data class Product(
    @SerializedName("id") val id: Int,
    @SerializedName("name") val name: String,
    @SerializedName("productCode") val productCode: String
)
val vertx = Vertx.vertx()

vertx.deployVerticle(DataVerticle()) {
    val options = DeliveryOptions()
    options.addHeader("ACTION", "ADD_PRODUCT")
    vertx.eventBus().send("data.verticle", """{"id":1,"name":"SOAP","productCode":"P101"}""", options)
}