Gson转换报错com.google.gson.JsonSyntaxException

本文介绍了在使用Gson进行JSON转换时遇到的`JsonSyntaxException`错误,特别是涉及到日期类型转换的问题。当尝试将包含日期的JSON对象转换为Bean类或JSON数组转换为List<Bean>时,由于Gson不支持直接将日期转换为Date类型,导致报错。解决方案是在实体类中将日期字段定义为String类型,而非Date类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请标明出处:http://blog.csdn.net/xiejinquan_/article/details/52002196


Gson将jsonobject的字符转化为Bean类或者将jsonarray的字符串转化为List<Bean>类报出下列错误

07-23 08:04:21.247 13743-13743/com.jesse.volleydemo E/TAG: com.google.gson.JsonSyntaxException: 20160703000000
                                                           com.android.volley.VolleyError: com.google.gson.JsonSyntaxException: 20160703000000
                                                               at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:143)
                                                            Caused by: com.google.gson.JsonSyntaxException: 20160703000000
                                                               at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:81)
                                                               at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:66)
                                                               at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:41)
                                                               at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
                                                               at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
                                                               at com.google.gson.Gson.fromJson(Gson.java:803)
                                                               at com.google.gson.Gson.fromJson(Gson.java:768)
                                                               at com.google.gson.Gson.fromJson(Gson.java:717)
                                                               at com.google.gson.Gson.fromJson(Gson.java:689)
                                                               at com.jesse.volleydemo.volley.GsonRequest.parseNetworkResponse(GsonRequest.java:42)
                                                               at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:125)
                                                            Caused by: java.text.ParseException: Unparseable date: "20160703000000" (at offset 14)
                                                               at java.text.DateFormat.parse(DateFormat.java:555)
                                                               at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:79)
                                                               at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:66) 
                                                               at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:41) 
                                                               at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93) 
                                                               at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172) 
                                                               at com.google.gson.Gson.fromJson(Gson.java:803) 
                                                               at com.google.gson.Gson.fromJson(Gson.java:768) 
                                                               at com.google.gson.Gson.fromJson(Gson.java:717) 
                                                               at com.google.gson.Gson.fromJson(Gson.java:689) 
                                                               at com.jesse.volleydemo.volley.GsonRequest.parseNetworkResponse(GsonRequest.java:42) 
                                                               at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:125) 

原因在于引入Gson将jsonobject的字符转化为Bean类或者将jsonarray的字符串转化为List<Bean>类

由于转化过程中不能包括Date类型,所以报错

解决

实体类出现日期时候,类型不要定义为date,定义为String

public class User {
    private String userId;

    private String userName;

    private Date userBirthday;

    private Double userSalary;
将userName的类型转换为String

public class User {
    private String userId;

    private String userName;

    private String userBirthday;

    private Double userSalary;


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值