前言
项目中遇到一种超级恶心的事情,后台返回数据类型不固定,有数据时是个对象,没数据时返回的是“”。
这个时候如果定义成对象,使用gson框架解析会崩溃,想到一种解决方案,就是定义这个类型为object。
解析出类型后进行判断,如果有数据就转化成对象。
遇坑
这个时候获取到的数据返回类型是key-value LinkedTreeMap类型的,使用tostring 打印出来是{a=1,b=2}这种形式,完全没有办法转成对象。所以又了下面这个疑问?
gson.internal.LinkedTreeMap如何转化成javabean对象?
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
String jsonStr = gson.toJson(linkedTreeMap);
JavaBean bean = gson.fromJson(jsonStr,JavaBean.class);
完美解决
总结
真是坑,后台返回数据死活不改,只能这边解决,经历千辛万苦后终于解决了。