前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Gson 序列化Javabean的时候要注意的地方

Gson 序列化Javabean的时候要注意的地方

作者头像
wust小吴
发布2019-07-05 11:59:48
7640
发布2019-07-05 11:59:48
举报
文章被收录于专栏:风吹杨柳
代码语言:javascript
复制
错误一:
代码语言:javascript
复制
08-11 01:19:28.126: E/AndroidRuntime(1306): FATAL EXCEPTION: main
08-11 01:19:28.126: E/AndroidRuntime(1306): Process: com.topnews, PID: 1306
08-11 01:19:28.126: E/AndroidRuntime(1306): java.lang.NumberFormatException: Invalid long: "2015-08-11 13:18"
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at java.lang.Long.invalidLong(Long.java:124)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at java.lang.Long.parse(Long.java:361)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at java.lang.Long.parseLong(Long.java:352)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at java.lang.Long.parseLong(Long.java:318)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at java.lang.Long.valueOf(Long.java:476)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at com.topnews.tool.DateTools.getSection(DateTools.java:139)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at com.topnews.adapter.NewsAdapter.initDateHead(NewsAdapter.java:72)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at com.topnews.adapter.NewsAdapter.<init>(NewsAdapter.java:55)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at com.topnews.fragment.NewsFragment$1.handleMessage(NewsFragment.java:135)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at android.os.Handler.dispatchMessage(Handler.java:102)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at android.os.Looper.loop(Looper.java:136)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at android.app.ActivityThread.main(ActivityThread.java:5017)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at java.lang.reflect.Method.invokeNative(Native Method)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at java.lang.reflect.Method.invoke(Method.java:515)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
08-11 01:19:28.126: E/AndroidRuntime(1306): 	at dalvik.system.NativeStart.main(Native Method)

错误二:

如果是php做后台的时候,传回时间一般都用时间戳,不要传回一个string  而是传回一个数字

代码语言:javascript
复制
08-11 01:11:01.096: W/System.err(1230): com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Invalid double: "1970-01-01 08:00:00"
08-11 01:11:01.106: W/System.err(1230): 	at com.google.gson.internal.bind.TypeAdapters$8.read(TypeAdapters.java:263)
08-11 01:11:01.116: W/System.err(1230): 	at com.google.gson.internal.bind.TypeAdapters$8.read(TypeAdapters.java:253)
08-11 01:11:01.116: W/System.err(1230): 	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
08-11 01:11:01.116: W/System.err(1230): 	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
08-11 01:11:01.126: W/System.err(1230): 	at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
08-11 01:11:01.126: W/System.err(1230): 	at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81)
08-11 01:11:01.126: W/System.err(1230): 	at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
08-11 01:11:01.126: W/System.err(1230): 	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
08-11 01:11:01.126: W/System.err(1230): 	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
08-11 01:11:01.126: W/System.err(1230): 	at com.google.gson.Gson.fromJson(Gson.java:803)
08-11 01:11:01.126: W/System.err(1230): 	at com.google.gson.Gson.fromJson(Gson.java:768)
08-11 01:11:01.136: W/System.err(1230): 	at com.google.gson.Gson.fromJson(Gson.java:717)
08-11 01:11:01.136: W/System.err(1230): 	at com.topnews.asyncTask.NewsAsyncTask.doInBackground(NewsAsyncTask.java:45)
08-11 01:11:01.146: W/System.err(1230): 	at com.topnews.asyncTask.NewsAsyncTask.doInBackground(NewsAsyncTask.java:1)
08-11 01:11:01.146: W/System.err(1230): 	at android.os.AsyncTask$2.call(AsyncTask.java:288)
08-11 01:11:01.146: W/System.err(1230): 	at java.util.concurrent.FutureTask.run(FutureTask.java:237)
08-11 01:11:01.156: W/System.err(1230): 	at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
08-11 01:11:01.156: W/System.err(1230): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
08-11 01:11:01.176: W/System.err(1230): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
08-11 01:11:01.176: W/System.err(1230): 	at java.lang.Thread.run(Thread.java:841)
08-11 01:11:01.186: W/System.err(1230): Caused by: java.lang.NumberFormatException: Invalid double: "1970-01-01 08:00:00"
08-11 01:11:01.196: W/System.err(1230): 	at java.lang.StringToReal.invalidReal(StringToReal.java:63)
08-11 01:11:01.196: W/System.err(1230): 	at java.lang.StringToReal.parseDouble(StringToReal.java:269)
08-11 01:11:01.206: W/System.err(1230): 	at java.lang.Double.parseDouble(Double.java:295)
08-11 01:11:01.206: W/System.err(1230): 	at com.google.gson.stream.JsonReader.nextLong(JsonReader.java:953)
08-11 01:11:01.216: W/System.err(1230): 	at com.google.gson.internal.bind.TypeAdapters$8.read(TypeAdapters.java:261)
08-11 01:11:01.266: D/dalvikvm(1230): GC_FOR_ALLOC freed 803K, 11% free 7309K/8188K, paused 53ms, total 53ms
08-11 01:11:01.266: W/System.err(1230): 	... 19 more

错误三:当你服务器端传回的json确定没有问题的时候,但是反序列化的时候老是报错

代码语言:javascript
复制
[android]com.google.gson.JsonSyntaxException: java.lang.IllegalStateException

// NewsBean newsbean = gson.fromJson(jsonStr, NewsBean.class); 这是我以前错误的代码,如果这样写的话,newsbean始终为空值,仅仅这一行代码不过 

因为前面看到那个博客里面他反序列的时候只有这一行代码,好像是无法解析成功的,

之后改正的代码如下:

java.lang.reflect.Type type = new TypeToken<NewsBean>() {}.getType();   NewsBean newsbean = gson.fromJson(jsonStr, type);

只有这样才能把服务器端传回的json字符串 string类型的,转换成为javabean对象

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年08月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档