android - Android JSON 序列化器

标签 android jsonserializer json-lib

我使用 JSONLib 2.4 作为 JSONSerializer() 方法。每次我开始 Activity 时它都会强制关闭。我尝试抛出 JSONException,但它给了我一个错误。怎么了?这是调用:

JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonTxt);

这是我的 LogCat 输出:

01-14 17:29:24.825: W/dalvikvm(13265): 无法解析 Lnet/sf/json/JSONException 的父类(super class); (1034) 01-14 17:29:24.825:W/dalvikvm(13265):类“Lnet/sf/json/JSONException;”的链接失败的 01-14 17:29:24.825: W/dalvikvm(13265): VFY: 无法解析异常类 813 (Lnet/sf/json/JSONException;) 01-14 17:29:24.825: W/dalvikvm(13265): VFY: 无法在地址 0x2e 处找到异常处理程序 01-14 17:29:24.825:W/dalvikvm(13265):VFY:拒绝Lnet/sf/json/JSONSerializer; .toJSON(Ljava/lang/Object; Lnet/sf/json/JsonConfig;)Lnet/sf/json/JSON; 01-14 17:29:24.825:W/dalvikvm(13265):VFY:拒绝 0x002e 处的操作码 0x0d 01-14 17:29:24.825:W/dalvikvm(13265):VFY:拒绝Lnet/sf/json/JSONSerializer; .toJSON(Ljava/lang/Object; Lnet/sf/json/JsonConfig;)Lnet/sf/json/JSON; 01-14 17:29:24.825:W/dalvikvm(13265):验证器拒绝类 Lnet/sf/json/JSONSerializer; 01-14 17:29:24.856:W/dalvikvm(13265):threadid = 11:线程因未捕获的异常而退出(组= 0x41b28930) 01-14 17:29:24.872:E/AndroidRuntime(13265):致命异常:AsyncTask #1 01-14 17:29:24.872: E/AndroidRuntime(13265): java.lang.RuntimeException: 执行 doInBackground() 时发生错误 01-14 17:29:24.872: E/AndroidRuntime(13265): 在 android.os.AsyncTask$3.done(AsyncTask.java:299) 01-14 17:29:24.872:E/AndroidRuntime(13265):在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 01-14 17:29:24.872:E/AndroidRuntime(13265):在java.util.concurrent.FutureTask.setException(FutureTask.java:219) 01-14 17:29:24.872:E/AndroidRuntime(13265):在java.util.concurrent.FutureTask.run(FutureTask.java:239) 01-14 17:29:24.872: E/AndroidRuntime(13265): 在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 01-14 17:29:24.872:E/AndroidRuntime(13265):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 01-14 17:29:24.872:E/AndroidRuntime(13265):在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:573) 01-14 17:29:24.872: E/AndroidRuntime(13265): 在 java.lang.Thread.run(Thread.java:856) 01-14 17:29:24.872:E/AndroidRuntime(13265):引起:java.lang.VerifyError:net/sf/json/JSONSerializer 01-14 17:29:24.872: E/AndroidRuntime(13265): 在 com.aer.illbehonest.VideoPlay$ShowTitlesTask.doInBackground(VideoPlay.java:63) 01-14 17:29:24.872: E/AndroidRuntime(13265): 在 com.aer.illbehonest.VideoPlay$ShowTitlesTask.doInBackground(VideoPlay.java:1) 01-14 17:29:24.872: E/AndroidRuntime(13265): 在 android.os.AsyncTask$2.call(AsyncTask.java:287) 01-14 17:29:24.872:E/AndroidRuntime(13265):在java.util.concurrent.FutureTask.run(FutureTask.java:234) 01-14 17:29:24.872: E/AndroidRuntime(13265): ... 4 更多

最佳答案

答案在 logcat 的第一行。

Unable to resolve superclass of Lnet/sf/json/JSONException

如果你看javadoc for JSONException它显示了类层次结构。您可以在 JSONException 上方看到它说 org.apache.commons.lang.exception.NestableRuntimeException 这意味着 NestableRuntimeException 是 JSONException 的父类(super class),因此您需要在项目中拥有 NestableRuntimeException 才能处理 JSONException去工作。

与将 JsonLib 添加到项目中的方式相同,您还应该添加 JsonLib 的依赖项。根据 mvnrepository 的说法,json-lib 2.4 依赖于相当多的 View 库,commons-lang 2.5 就是其中之一。您可以看到 mvnrepository here 报告的它们。您还可以在 json-lib 项目页面 here 上看到它们的列出。 .

对于一个看起来有大量依赖项并且会使你的 apk 更大的移动应用程序。我没有使用过 json-lib,但我可能建议使用更独立的东西,例如 gson (download)。

关于android - Android JSON 序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328464/

相关文章:

json.net - 牛顿软件 JSON : TypeNameHandling - $type purpose

c# - C# 中解析此日期格式 "Mon Oct 07 00:00:00 EDT 2013"的正确方法是什么?

java - 如何强制 JSON-lib 的 JSONObject.put(..) 转义包含 JSON 的字符串?

java - 正确实现基于时间的对象存储

java - JNI Android - 将 char* 转换为字节数组并将其返回给 java

android - 如何在从shoutcast流中检索元数据时了解新歌曲信息

C# JsonSerializer.Serialize 返回一个空对象

java - 安卓 : youtube player has been released

java - Java 解析 JSON 时出错 : ClassNotFoundException

java.lang.NoClassDefFoundError : net/sf/json/JSONArray