美文网首页
Gson解析遇到空的问题

Gson解析遇到空的问题

作者: Avalon1 | 来源:发表于2017-03-15 13:25 被阅读1712次

某些字段本身定义为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异常。

相关文章

网友评论

      本文标题:Gson解析遇到空的问题

      本文链接:https://www.haomeiwen.com/subject/gnylnttx.html