Android room存储高级数据类型

当需要在Android本地数据库Room中存储非基础数据类型如List时,可以通过TypeConverter实现高级存储。介绍了一种将数据转换为字符串存储,再通过Gson解析的方法,以及Room的@TypeConverters注解配合自定义转换器的方式,让存储变得简单。并提到使用外键虽然可行但较为繁琐。提供了查看数据库的方法和相关文章参考。
摘要由CSDN通过智能技术生成

比如一个项目的bean对象,有很多个坐标信息,通常服务器把他们当成数组传下来,我们客户端把他们放在List里面,用Gson很容易就解析出来了,一切都是如此完美。突然,要求把这些对象存储在本地数据库,这时候懵逼的发现数据库不支持List这个数据类型,那我们如何保存这种非基础数据类型呢?

{
	"areaInfo": [
	{
		"longitude": 106.4621997480343,
		"latitude": 29.510238334206996
	},
	{
		"longitude": 106.45794048667334,
		"latitude": 29.510538137429645
	},
	{
		"longitude": 106.45197740193589,
		"latitude": 29.50990225016947
	}],
	"projectTypeName": "路灯",
	"projectId": "13",
	"projectName": "智博会路灯",
}

一、初级做法

和服务器协议商定将数组转成string类型再传下来,我们直接把这个string存储起来即可。要用时候,再把这个string用Gson解析成List。
这么做显得很low。。。

二、高级做法

room大佬可能想到我们会有这些乱七八糟脑路清奇的想法,给我们提供了类型转换这一高级工具,让我们爱怎么折腾就怎么折腾。

  1. 现在,我们这个bean就要这样写了:
@Entity
pub
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值