【发布时间】:2020-02-03 10:58:50
【问题描述】:
我知道这个问题被问了数百次,我检查了 30 多个答案,但没有一个对我有用。
我正在使用 Kotlin 在 android studio 中运行单元测试。我正在尝试使用String 构建JSONObject。
我用来构建简单 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 也会抛出同样的错误!!
更新 2:
查看stacktrace后发现如下错误:
Method toString in org.json.JSONObject not mocked.
我用谷歌搜索了它,解决方案是将以下配置添加到我的 build.gradle 文件中:
testOptions {
unitTests.returnDefaultValues = true
}
但是添加这个会使返回的JSONObject null 而不是抛出异常,即使我的字符串格式正确。
【问题讨论】:
-
您的代码对我来说工作正常,所以我在字符串中看不到任何问题。不如试试
Gson看看那里是否也有错误。当我这样做时它也可以正常工作:Gson().fromJson("your string", HashMap::class.java) -
@VarunRaj 是的,我已经检查过了,但它对我不起作用
-
我认为您应该使用stackoverflow.com/a/47283450/7436566 这种方式来创建 JSON 对象,因为您已经知道 JSON 键。
-
@omz1990 是的,您提到的 Gson 方法有效。并返回一个哈希映射,其中包含值。但如果你说你机器上的相同代码没有问题,那么我的项目/配置或类似的东西有问题