随机MalformedJsonException

时间:2012-04-10 09:07:31

标签: android string json deserialization gson

有时有Gson()。fromJSON函数的问题...我的应用程序使用Gson()反序列化一个JSON字符串,它几乎一直工作完美,但有几次我得到这个错误:

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected literal value at line 1 column 7592
at com.google.gson.Gson.fromJson(Gson.java:769)
at com.google.gson.Gson.fromJson(Gson.java:721)
at com.google.gson.Gson.fromJson(Gson.java:670)
at com.google.gson.Gson.fromJson(Gson.java:642)
at my.new.prog.Main$GetData.onPostExecute(Main.java:301)
at my.new.prog.Main$GetData.onPostExecute(Main.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:417)
at android.os.AsyncTask.access$300(AsyncTask.java:127)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
at dalvik.system.NativeStart.main(Native Method)
Caused by: com.google.gson.stream.MalformedJsonException: Expected literal value at line 1 column 7592
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1298)
at com.google.gson.stream.JsonReader.readLiteral(JsonReader.java:1195)
at com.google.gson.stream.JsonReader.nextValue(JsonReader.java:789)
at com.google.gson.stream.JsonReader.objectValue(JsonReader.java:766)
at com.google.gson.stream.JsonReader.peek(JsonReader.java:380)
at com.google.gson.stream.JsonReader.advance(JsonReader.java:426)
at com.google.gson.stream.JsonReader.skipValue(JsonReader.java:637)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:174)
at com.google.gson.Gson.fromJson(Gson.java:755)
... 16 more

我认为当连接失败只是一个小位并且它检索损坏的JSON字符串时会出现此错误。我再说一遍,这个错误随机出现在JSON字符串的不同部分。

在这种情况下,我收到错误:Expected literal value at line 1 column 7592
但有时我会在这里得到错误:Expected literal value at line 1 column 140

你怎么看?可能是我遇到的问题是由损坏的JSON字符串引起的?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

我认为问题是由连接中断引起的。如果异常显示相同的json字符串,则完全可以确定。否则,很可能会不时生成格式错误的json文件。

如果问题是连接被破坏,请考虑重试,直到您摆脱此异常。如果文件很大,您可能会发现resumable download thread很有帮助。但是,如果文件大小很小,我建议你不要那么复杂。

PS:我从来没有从GSON那样出现这种不一致的行为,所以我认为这不是图书馆本身的问题,如果这就是你的想法。