Gson解析List为空应如何解决

Android 同时被 3 个专栏收录
79 篇文章 0 订阅
18 篇文章 0 订阅

前面是我遇到的问题,后面是解决方法

服务器端发送数据:

<span style="font-size:18px;">AnliDataDao anliDao=new AnliDataDao();
			List<AnliData> anlilist;
			String jsonString="";
			try {
				anlilist = anliDao.queryAnli();//得到了一个Anli类的List数组 
				Gson gson = new Gson();
				 jsonString = gson.toJson(anlilist);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
</span>
客户端接收数据,对gson数据解析:
<span style="font-size:18px;">ype type = new TypeToken<List<AnliData>>() {
				}.getType();
				Gson gson =  new Gson();
				list = gson.fromJson(result, type);
for(int i=0;i<list.size();i++){
					System.out.println("------------这是HttpUtil中的Gson解析-------------------------------------\n这个是图片地址:"+list.get(i).getMyImageUrl()+"这个是文本信息\n"+list.get(i).getMyTvContent());
				}
</span>

按理说,我们客户端在type中的数据类型和服务器端发送的数据类型是一样的,但是解析的结果为null;这难道是Gson解析不了List的数组?这让我头疼了许久;


后来发现了一种更好的解决方法:


对你所要传的数据包装在一个List类中,你怎么也是要发送一个List数组,就不如直接把你要发送的数据直接封装在一个List类中:

import java.util.List;

public class AnliDataList {
	List<AnliData> anlilist;

	public List<AnliData> getAnlilist() {
		return anlilist;
	}

	public void setAnlilist(List<AnliData> anlilist) {
		this.anlilist = anlilist;
	}
	
	
}


这样一来我们直接按照这个类解析就好了:


public class demo {

	public static void main(String args[]) {

		

		AnliDataDao anliDao = new AnliDataDao();//这是为了从数据库中拿到数据
		AnliDataList anlidatalist=new AnliDataList();//实例化一个对AnliData的封住类(也就是List<AnliData>)
		String jsonString = "";
		
		try {
			anlidatalist.setAnlilist(anliDao.queryTextView()); //这就用我们写的set方法,将得到的list数组放到我们的封装List类中;
			Gson gson = new Gson();
			jsonString = gson.toJson(anlidatalist);
			// jsonString = createJsonString("anlitest", anlilist);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		
		Type type = new TypeToken<AnliDataList>() {
		}.getType();
		Gson gson =  new Gson();
	AnliDataList	list = gson.fromJson(jsonString, type);
for(int i=0;i<list.getAnlilist().size();i++){
//这样我们就拿到数据了;
	System.out.println(list.getAnlilist().get(i).getMyImageUrl()+"\n"+list.getAnlilist().get(i).getMyTvContent());
	}

	}

}



  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值