Gson解析遇到空的问题

某些字段本身定义为Jsonarray或者JsonObject 但是服务端在没有数据的时候偶尔会返回“”,这样必然就会报类似下面的异常

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 102 path $.data.avatar_url

解决方案其实来源与你真的会用Gson吗?Gson使用指南(四)以及 Retrofit+RxJava实战日志(4)-Gson解析空字符串的问题
个人认为对于整个项目而言。需要做一些通用处理,使用@JsonAdapter注解确实是很方便的,于是对于list的处理参照第二篇文章,而对于实体类映射的返回为“”的处理参考于第一种,稍作改写

private static final java.lang.String TYPE_NAME_PREFIX = "class ";

 if (json.isJsonObject()){
      Gson mGson=new Gson();
      return mGson.fromJson(json,typeOfT);
  }else {
      String className = typeOfT.toString();
      if (className.startsWith(TYPE_NAME_PREFIX)) {
          className = className.substring(TYPE_NAME_PREFIX.length());
      }

      try {
          return Class.forName(className).newInstance();
      } catch (InstantiationException mE) {
          mE.printStackTrace();
      } catch (IllegalAccessException mE) {
          mE.printStackTrace();
      } catch (ClassNotFoundException mE) {
          mE.printStackTrace();
      }

  }
    return null;

在需要的时候使用注解标识,至少尽量保证少出现Gson异常。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容