由于org.json.XML

时间:2016-10-20 14:17:11

标签: android json org.json

我遇到了一个用Android Studio开发的小安卓应用程序的问题。我想做的就是在按钮单击例程中使用org.json.XML从xml字符串中获取JSON。 但不幸的是,应用程序在调试模式下崩溃而没有错误,当我正常运行应用程序时,它会生成以下错误消息:

              --------- beginning of crash
     

E / AndroidRuntime:致命异常:主要                     处理:com.example.drudo.anothertestapp,PID:3068                     java.lang.IllegalStateException:无法执行android:onClick的方法                         在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)                         在android.view.View.performClick(View.java:5198)                         在android.view.View $ PerformClick.run(View.java:21147)                         在android.os.Handler.handleCallback(Handler.java:739)                         在android.os.Handler.dispatchMessage(Handler.java:95)                         在android.os.Looper.loop(Looper.java:148)                         在android.app.ActivityThread.main(ActivityThread.java:5417)                         at java.lang.reflect.Method.invoke(Native Method)                         在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)                         在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)                      引起:java.lang.reflect.InvocationTargetException                         at java.lang.reflect.Method.invoke(Native Method)                         在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)                         在android.view.View.performClick(View.java:5198)                         在android.view.View $ PerformClick.run(View.java:21147)                         在android.os.Handler.handleCallback(Handler.java:739)                         在android.os.Handler.dispatchMessage(Handler.java:95)                         在android.os.Looper.loop(Looper.java:148)                         在android.app.ActivityThread.main(ActivityThread.java:5417)                         at java.lang.reflect.Method.invoke(Native Method)                         在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)                         在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)                      引起:java.lang.NoSuchMethodError:没有静态方法stringToValue(Ljava / lang / String;)Ljava / lang / Object;在类Lorg / json / JSONObject中;或其超类('org.json.JSONObject'的声明出现在/system/framework/core-libart.jar中)                         在org.json.XML.parse(XML.java:257)                         在org.json.XML.parse(XML.java:263)                         在org.json.XML.toJSONObject(XML.java:302)                         在com.example.drudo.anothertestapp.MainActivity.onButtonClick(MainActivity.java:28)                         at java.lang.reflect.Method.invoke(Native Method)                         在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)                         在android.view.View.performClick(View.java:5198)                         在android.view.View $ PerformClick.run(View.java:21147)                         在android.os.Handler.handleCallback(Handler.java:739)                         在android.os.Handler.dispatchMessage(Handler.java:95)                         在android.os.Looper.loop(Looper.java:148)                         在android.app.ActivityThread.main(ActivityThread.java:5417)                         at java.lang.reflect.Method.invoke(Native Method)                         在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)                         在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)   W / art:暂停所有线程:8.734ms   I /处理:发送信号。 PID:3068 SIG:9   申请已终止。

onButtonClick代码:

 public void onButtonClick(View view)
{
    String XML_TESTSTRING = "<item><value>test</value></item>";

    JSONObject jsonObject = null;

    try
    {
        jsonObject = XML.toJSONObject(XML_TESTSTRING);//here crash
    }
    catch (JSONException e)
    {
        e.printStackTrace();
    }
}

我在项目中包含的json库如下:https://mvnrepository.com/artifact/org.json/json/1.5-20090211

我在app中创建了一个libs目录,将jar复制到它并右键单击“Add as Library”。我在build.gradle中的依赖项部分如下所示:

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.google.android.gms:play-services-appindexing:8.1.0'
compile files('libs/json-1.5-20090211.jar')

}

我最好的猜测是问题是关于Android api包含org.json以及我下载和包含的那个,但我不知道如何继续。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

Android框架的org.json与我们在外部添加的存储库org.json之间存在冲突。 Android在XML类中没有必需的toJsonObject(testString)方法。

使用此开源

https://github.com/stleary/JSON-java,您应该重构此软件包并继续。

有关开发者的更多详细信息,请参见https://github.com/stleary/JSON-java/wiki/JSON-Java-for-Android-developers

我尝试过了,这很完美。