0

有时会遇到 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 字符串引起的吗?

先感谢您!

4

1 回答 1

1

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

如果问题是连接中断,请考虑重试,直到您摆脱此异常。如果文件很大,您可能会发现可恢复下载线程很有帮助。但是,如果文件很小,我不建议您这么复杂。

PS:我从来没有遇到过来自 GSON 的这种不一致的行为,所以我认为这不是图书馆本身的问题,如果这是你的想法。

于 2012-04-10T09:13:53.123 回答