我知道这个问题被问了数百遍,我已经检查了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
也会抛出同样的错误!更新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有一个名称为
JSONArray
和JSONObject
的对象,但是将implementation
添加到build.gradle
文件时一样。它以另一种方式处理JSONObject
和JSONArray
。因为在将语句添加到gradle文件中之后,android将发出以下警告:
json
定义与Android 现在提供的类冲突的类
关于android - 在Kotlin中使用JSONObject总是会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60037851/