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

本文介绍了一种处理前端请求中后台返回不确定类型数据的方法。通过使用JsonElement作为数据载体,可以根据实际返回的数据类型进行灵活的类型转换,实现了对不同类型数据的有效处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端请求数据,后台会根据状态不同返回不同的数据类型,有时是序列化的一堆数据,有时只有一个字符串,整个工程的框架是别人写好的,基本功能也是封装好的,要在人家原有的基础上进行修改,使用的是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(...)
.....
}

 

 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值