同一個方法接收後臺傳來的不同數據類型的數據

前端請求數據,後臺會根據狀態不同返回不同的數據類型,有時是序列化的一堆數據,有時只有一個字符串,整個工程的框架是別人寫好的,基本功能也是封裝好的,要在人家原有的基礎上進行修改,使用的是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(...)
.....
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章