同一个方法接收后台传来的不同数据类型的数据

前端请求数据,后台会根据状态不同返回不同的数据类型,有时是序列化的一堆数据,有时只有一个字符串,整个工程的框架是别人写好的,基本功能也是封装好的,要在人家原有的基础上进行修改,使用的是RxJava2.0,所以写函数时类型要确定,小白一只,尝试了不同的方法以接收后台传来的类型不定的数据,试过用?,Object,Map等类型,都不太成,其中用Map是因为直接看了后台会传来的所有数据类型后决定尝试的,但是回来的一堆数据中包含的一种类型的数据,没法用默认方法转换,还要自己重写Map的某些方法,想着重写了没准也不能用,所以就干脆放弃了,后来又研究了一下返回的几种数据类型,发现JsonElement是这几种类型的基类,然后一试,果然成了。

 
  

以下是JsonElement的源码,可以作为JsonObject、JsonArray、JsonPrimitive或JsonNull

package com.google.gson;/** * A class representing an element of Json. It could either be a {@link JsonObject}, a * {@link JsonArray}, a {@link JsonPrimitive} or a {@link JsonNull}. * * @author Inderjeet Singh * @author Joel Leitch */public abstract class JsonElement {...}

判断不同的类型,并进行类型转换

void fun(JsonElement data){
  if(data.isJsonObject){
     MyInfo userInfo = new MyInfo();
     userInfo = new Gson().fromJson(data,MyInfo.class);
  }else if(data.isJsonPrimitive()){
     String str = null;
     str = new Gson().fromJson(data,String.class);
  }else if(...)
.....
}

 
  

 
  





你可能感兴趣的:(Java)