В Android (API 30, но также API 26), проект Java у меня есть эта зависимость в build.gradle:
implementation group: 'org.json', name: 'json', version: '20210307'
но следующее не удается, потому что он не может найти запрошенный конструктор (org.json.JSONTokener(Reader ...)) и настаивает на том, чтобы единственный конструктор был с String:
Reader reader = new InputStreamReader(responseBody.byteStream());
org.json.JSONTokener jst = new org.json.JSONTokener(reader);
error: incompatible types: Reader cannot be converted to String
Я использую конкретную реализацию org.json, в которой отсутствует эта функция, или я что-то делаю не так?
Действительно, даже без добавления этой зависимости org.json был найден. Это нормально, значит, в версии для Android есть только конструктор String? Каким будет лучший способ создать собственный токенер JSON из responseBody.byteStream() (для использования с телом ответа Retrofit).
спасибо за подсказку, возможно, это может помочь другим: stackoverflow.com/questions/33803776/…
В конце концов я получил github.com/stleary/JSON-java, изменил его пространство имен на org.json.XYZ и добавил скомпилированный JAR в качестве зависимости к моему проекту. Существует также возможность плагина gradle для затенения пространства имен, которое я не пробовал, но упоминается в ссылке в другом моем комментарии. Спасибо, что указали мне правильное направление.




вам не хватает того факта, что google сделал org.json частью платформы Android ... поэтому без переупаковки вы не можете использовать другую версию, чем на самом Android