Gson:如何通过JsonObject / JsonElement作为可序列化的?

时间:2019-04-03 10:07:14

标签: java kotlin gson

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

val jsonRedir = JsonObject()
someCustomMethod(jsonRedir)

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

我该如何解决?

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

1 个答案:

答案 0 :(得分:2)

您可以创建一个类,该类可以通过实现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))
    }
}