Я пытаюсь использовать org.json.XML для преобразования XML-файла в JSON в моем приложении для Android.Поскольку включенные классы org.json, предоставляемые Android, не включают org.json.XML, я добавил его в качестве зависимости в свой build.gradle:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.volley:volley:1.1.1'
implementation group: 'org.json', name: 'json', version: '20180813'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso- core:3.0.2'
}
Однако, когда я пытаюсь запустить свое приложение, онозавершается со следующей ошибкой:
java.lang.NoSuchMethodError: No direct method <init>(Ljava/io/Reader;)V in class Lorg/json/JSONTokener; or its super classes (declaration of 'org.json.JSONTokener' appears in /system/framework/core-libart.jar)
at org.json.XMLTokener.<init>(XMLTokener.java:57)
at org.json.XML.toJSONObject(XML.java:516)
at org.json.XML.toJSONObject(XML.java:548)
at org.json.XML.toJSONObject(XML.java:472)
Кроме того, build.gradle имеет предупреждение:
json defines classes that conflict with classes now provided by Android. Solutions includes finding newer versions or alternative libraries that do not have the same problem (for example, for httpclient use HttpUrlConnection or okhttp instead), or repackaging the library using something like jarjar.
Это та же проблема, что и в этот вопрос ,но предоставленный ответ не работает, так как org.json.XML не включен по умолчанию в Android.
Учитывая вышесказанное, можно ли переписать мой build.gradle либо для игнорирования включенной библиотеки org.json, либо для импорта только org.json.XML?Или мне придется взглянуть на использование другой библиотеки, например https://github.com/smart-fun/XmlToJson?