【问题标题】:Cannot call object() method on JSONStringer class in Kotlin无法在 Kotlin 中的 JSONStringer 类上调用 object() 方法
【发布时间】:2020-09-13 01:28:17
【问题描述】:

我正在使用 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() 方法?

【问题讨论】:

    标签: android json android-studio kotlin


    【解决方案1】:

    为什么不改用JSONObject 类,例如往返JSONObject:

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

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

    JSONStringer

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

    这里有一个很好的教程:Json parser

    您也可以使用 JSON 序列化/反序列化库,例如 GSON 或 Jackson

    How to convert Java object to / from JSON (Jackson)

    【讨论】:

    • 我很高兴,我在很多公司项目中使用 Gson,但 Jackson 非常强大,我在我的个人项目中使用,如果你使用 Spring,它支持开箱即用的 Jackson,唯一的区别是 Jackson 有如果您来自 GSON,许多功能可能看起来势不可挡,因此请尝试一下同时查看 Moshi 库
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      相关资源
      最近更新 更多