首页 > 解决方案 > 无法在 Kotlin 中的 JSONStringer 类上调用 object() 方法

问题描述

我正在使用org.json.JSONStringer类为我的 Android 应用程序生成 JSON 字符串。

fun createJSONString(stringer:JSONStringer) {
    stringer.object()
    //write some stuff
    stringer.endObject()
}

但是,我不能调用object()这个类的方法来创建一个新的 JSON 对象,因为object它是一个 kotlin 属性。因此,Android Studio 告诉我对象不允许使用构造函数。我能做些什么来强制 Android Studio 使用 JSONStringer 的object()方法?

标签: androidjsonandroid-studiokotlin

解决方案


为什么不使用JSONObject类来代替 JSONObject 的示例:

    val jsonStr = "{\"age\":33,\"messages\":[\"msg 1\",\"msg 2\"],\"name\":\"jim\"}"
    val jObj = JSONObject(jsonStr)
    val str = jObj.toString()

由于JSONStringer只是 and 的一个实现,JSONObject#toString因此JSONArray#toString也不鼓励使用此 API,如下所述:

JSONStringer

实现 JSONObject#toString 和 JSONArray#toString。大多数应用程序开发人员应该直接使用这些方法而忽略此 API

这是一个很好的教程:Json parser

作为替代方案,您可以使用 JSON 序列化/反序列化库,如 GSON 或 Jackson

如何将 Java 对象转换为/从 JSON (Jackson)


推荐阅读