【问题标题】:Gson: How pass JsonObject/JsonElement as serializable?Gson:如何将 JsonObject/JsonElement 作为可序列化传递?
【发布时间】:2019-04-03 10:07:14
【问题描述】:

在我的 Kotlin 项目中,我必须使用 com.google.gson.JsonObject

val jsonRedir = JsonObject()
someCustomMethod(jsonRedir)

问题在于方法someCustomMethod 有一个Serializable 参数。但是JsonObject 不是Serializable

我该如何解决这个问题?

我必须将准确的JsonElementJsonObject 传递给someCustomMethod

【问题讨论】:

  • 要么更改方法头或包装JsonObject,如果不是,则无法将JsonObject更改为可序列化
  • 您可以创建一个扩展JsonObject并实现Serializable的新类,并将该类的对象传递给someCustomMethod

标签: java kotlin gson


【解决方案1】:

您可以通过实现Serializable 接口并实现writeObjectreadObject 来创建一个可以序列化/反序列化JsonObject 的类,如下所示:

class JsonObjectSerializer(val gson: Gson, val jsonObject: JsonObject) : Serializable {

    @Throws(ClassNotFoundException::class, IOException::class)
    private fun readObject(aInputStream: ObjectInputStream) {
        val gson = aInputStream.readUTF()
        jsonObject = this.gson.fromJson(gson, JsonObject::class.java!!)
    }

    @Throws(IOException::class)
    private fun writeObject(aOutputStream: ObjectOutputStream) {
        aOutputStream.writeUTF(gson.toJson(jsonObject))
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2017-05-03
    • 2018-03-23
    • 2012-06-12
    • 2021-03-08
    • 2016-10-29
    • 1970-01-01
    相关资源
    最近更新 更多