android - 在Kotlin中使用JSONObject总是会引发错误

标签 android kotlin

我知道这个问题被问了数百遍,我已经检查了30多个答案,但没有一个对我有用。

我正在使用Kotlin在android studio中运行单元测试。我正在尝试使用JSONObject构建String

我用来构建简单json对象的方法总是抛出Cannot evaluate org.json.JSONObject.toString()

我正在使用的字符串绝对具有有效的Json格式

这是Android中的错误还是什么?

这是我使用的方法:

fun createTaskJson(): JSONObject {
    val jsonString =
        "{\"id\":138,\"title\":\"G0102-025\",\"type\":\"New Land Evaluation\",\"taskCreationDate\":\"28/01/2020\",\"taskDeliveryDate\":\"02/02/2020\",\"taskCreationTime\":\"05:15 AM\"}"
    val realJson = JSONObject(jsonString)
    return realJson
}

更新1:
请注意,同样创建一个空的JSONObject也会抛出同样的错误!

enter image description here

更新2:

检查stacktrace后,我发现以下错误:
Method toString in org.json.JSONObject not mocked.
我已经用谷歌搜索了,解决方案是将以下配置添加到我的build.gradle文件中:
    testOptions {
    unitTests.returnDefaultValues = true
}

但是添加它会使返回的JSONObject为null,而不是引发异常,即使我的字符串格式正确也是如此。

最佳答案

在上面的问题中提到的更新之后。经过大量搜索。我发现以下内容:

解决方案是将以下行添加到build.gradle文件中:

implementation group: 'org.json', name: 'json', version: '20190722'

我不知道为什么,但是就像android有一个名称为JSONArrayJSONObject的对象,但是将implementation添加到build.gradle文件时一样。它以另一种方式处理JSONObjectJSONArray

因为在将语句添加到gradle文件中之后,android将发出以下警告:

json定义与Android 现在提供的类冲突的类

关于android - 在Kotlin中使用JSONObject总是会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60037851/

相关文章:

android - Xmpp + openfire + 服务器对发件人的确认

android - 应用程序意外停止。请再试一次

Kotlin:如何从范围返回一些值?

android - 如何使用 Google Play 服务管理一个应用程序/游戏内的多个 'minigames'?

android - "Up"的正确处理方式 Navigation according to guidelines

Android:将浮点值从 Java 传递到 JNI 始终为 NaN

testing - 如何拥有一个使用 JUnit 测试业务逻辑的 KotlinJS 模块?

java - 从第 5 版开始, 'enum' 是关键字,不能用作标识符

drop-down-menu - Vaadin 8 NativeSelect更改列表的数据表示形式

Android Studio 卡在 "Analyzing..."