美文网首页
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