Использование JSONObject в Kotlin всегда выдает ошибку - PullRequest
1 голос
/ 03 февраля 2020

Я знаю, что этот вопрос задают сотни раз, я проверил более 30 ответов, и ни один из них не работал для меня.

Я провожу юнит-тест в android студии, используя Kotlin , Я пытаюсь построить 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:

После проверки трассировки стека я обнаружил следующую ошибку:

Method toString in org.json.JSONObject not mocked.

Я нашел его в Google, и было решено добавить следующую конфигурацию в мой build.gradle file:

    testOptions {
    unitTests.returnDefaultValues = true
}

Но добавление этого параметра вернуло JSONObject null вместо исключения, даже если моя строка отформатирована правильно.

1 Ответ

2 голосов
/ 04 февраля 2020

После обновлений, упомянутых в вопросе выше. И после долгих поисков. Я обнаружил следующее:

Решение заключалось в добавлении следующей строки в build.gradle файл:

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

Я не знаю почему, но это похоже на android объект с именами JSONArray и JSONObject, но при добавлении implementation в файл build.gradle. Он обрабатывает JSONObject и JSONArray по-другому.

Поскольку после добавления оператора в файл gradle, следующее предупреждение будет выдано android:

json определить классы, которые конфликтуют с классами, теперь предоставленными Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...