Org.json.JSONTokener: нет конструктора из Reader

В 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, в которой отсутствует эта функция, или я что-то делаю не так?

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

Selvin 09.04.2021 16:16

Действительно, даже без добавления этой зависимости org.json был найден. Это нормально, значит, в версии для Android есть только конструктор String? Каким будет лучший способ создать собственный токенер JSON из responseBody.byteStream() (для использования с телом ответа Retrofit).

bliako 09.04.2021 16:18

спасибо за подсказку, возможно, это может помочь другим: stackoverflow.com/questions/33803776/…

bliako 09.04.2021 16:33

В конце концов я получил github.com/stleary/JSON-java, изменил его пространство имен на org.json.XYZ и добавил скомпилированный JAR в качестве зависимости к моему проекту. Существует также возможность плагина gradle для затенения пространства имен, которое я не пробовал, но упоминается в ссылке в другом моем комментарии. Спасибо, что указали мне правильное направление.

bliako 09.04.2021 20:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
20
0

Другие вопросы по теме