Gson转HashMap(包括Map)问题解决方法
2016-11-17 09:31
357 查看
今天写项目用到了Gson将存储的json字符串转成hashmap:
但是在connectionString =(HashMap)gson.fromJson(jsonConnectionString, newTypeToken>(){}.getType());这个语句报错:
Exception in thread "main"com.google.gson.JsonSyntaxException:java.lang.IllegalStateException: Expected BEGIN_ARRAY but wasBEGIN_OBJECT at line 1 column 3
at com.google.gson.Gson.fromJson(Gson.java:815)
at com.google.gson.Gson.fromJson(Gson.java:768)
at com.google.gson.Gson.fromJson(Gson.java:717)
at DataSourceOrder.update(DataSourceOrder.java:39)
atConfigItemInfo.notifyObservers(ConfigItemInfo.java:64)
at ConfigItemInfo.setHm(ConfigItemInfo.java:22)
at Tester.main(Tester.java:16)
Caused by: java.lang.IllegalStateException: ExpectedBEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 3
atcom.google.gson.stream.JsonReader.beginArray(JsonReader.java:338)
atcom.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:172)
atcom.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145)
at com.google.gson.Gson.fromJson(Gson.java:803)
... 6 more
经过排查原因,发现是字符串前面有空格,或者是多余的“[”。另外当这个字符串是服务器返回的数据时,有可能会出现从GBK转码到UTF-8时,字符串前面多出来不可见字符,这样也会报错
而我之前定义的json字符串是"[{\"oracle\":1234}]",当我改成"{\"oracle\":1234}",这个错误就没有了,mark一下
但是在connectionString =(HashMap)gson.fromJson(jsonConnectionString, newTypeToken>(){}.getType());这个语句报错:
Exception in thread "main"com.google.gson.JsonSyntaxException:java.lang.IllegalStateException: Expected BEGIN_ARRAY but wasBEGIN_OBJECT at line 1 column 3
at com.google.gson.Gson.fromJson(Gson.java:815)
at com.google.gson.Gson.fromJson(Gson.java:768)
at com.google.gson.Gson.fromJson(Gson.java:717)
at DataSourceOrder.update(DataSourceOrder.java:39)
atConfigItemInfo.notifyObservers(ConfigItemInfo.java:64)
at ConfigItemInfo.setHm(ConfigItemInfo.java:22)
at Tester.main(Tester.java:16)
Caused by: java.lang.IllegalStateException: ExpectedBEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 3
atcom.google.gson.stream.JsonReader.beginArray(JsonReader.java:338)
atcom.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:172)
atcom.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145)
at com.google.gson.Gson.fromJson(Gson.java:803)
... 6 more
经过排查原因,发现是字符串前面有空格,或者是多余的“[”。另外当这个字符串是服务器返回的数据时,有可能会出现从GBK转码到UTF-8时,字符串前面多出来不可见字符,这样也会报错
而我之前定义的json字符串是"[{\"oracle\":1234}]",当我改成"{\"oracle\":1234}",这个错误就没有了,mark一下
相关文章推荐
- SpringMVC路径包括小数点出现问题的解决方法
- MySQL字符集问题解决方法(包括改配置文件、命令行修改和JDBC的问题)
- 关于注册Google Map api key的方法和解决网页无法显示的问题
- ubuntu下git的使用流程,包括可能遇到的问题和解决方法。
- gson将json转为map的时候,出现类型转换异常的解决方法
- Hadoop,往map/reduce中传值的问题解决方法实例
- 百度 地图 slidingmenu 黑边 使用截图的方式解决黑边问题,步骤: 1.slidingMenu打开的时候调用BaiduMap的snapshot方法截图获取Bitmap对象; 2.使用
- golang中map并发读写问题及解决方法
- 第十章 Scala 容器(四):使用Map方法解决问题
- android开发中genymotion安装过程详解(包括安装过程中一些问题的解决方法)
- hadoop问题Type mismatch in value from map解决方法
- 【GoLang笔记】遍历map时的key随机化问题及解决方法
- 关于注册Google Map api key的方法和解决网页无法显示的问题
- Fedora中文显示问题解决方法(包括目录,xmms,gaim)
- isnan和hash_map使用问题解决方法
- hadoop问题Type mismatch in value from map解决方法
- MySQL字符集问题解决方法(包括改配置文件、命令行修改和JDBC的问题)
- Gson反射hashmap时数字转变为double的解决方法
- 在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址
- 解决Gson解析数据用map接收时int自动转化为double问题