Flutter数据处理插件rljson的使用
Flutter数据处理插件rljson的使用
rljson
是一个用于在JSON中定义和管理关系数据结构的库。通过定义关系数据结构,开发者可以在轻量级且易于阅读的格式中处理结构化和相互关联的数据,这种格式广泛支持于各种平台和编程环境。

动机
关系数据结构是表示实体之间复杂关系的基础,但传统的关系型数据库通常需要重框架或特定的查询语言。通过在JSON中定义关系数据结构,开发者可以以轻量级、人类可读的形式处理结构化的相互关联的数据,并且这种形式在各种平台和编程环境中得到了广泛的支持。rljson
简化了API中的数据交换,增强了与SQL和NoSQL数据库的兼容性,并支持那些需要轻量级数据表示的场景,同时保留了关系建模的优点。
特点
- 定义独立或相互连接的表
- 跨表链接和访问字段
- 深度128位哈希
- 不可变状态
- 通过哈希避免重复
示例
import 'package:rljson/rljson.dart';
Future<void> main() async {
// 创建表
print('创建表');
var db = Rljson.fromJson({
'tableA': {
'_data': [
{'a': 'a0'},
{'a': 'a1'},
],
},
'tableB': {
'_data': [
{'b': 'b0'},
{'b': 'b1'},
],
},
});
// 每个表项都会获得基于内容的哈希码
print('每个表项都会获得基于内容的哈希码');
final hashA0 = db.hash(table: 'tableA', index: 0);
final hashA1 = db.hash(table: 'tableA', index: 1);
final hashB0 = db.hash(table: 'tableB', index: 0);
final hashB1 = db.hash(table: 'tableB', index: 1);
// 哈希码可用于访问数据
print('哈希码可用于访问数据');
final a0 = db.get(table: 'tableA', item: hashA0, key1: 'a');
print(a0); // a0
final a1 = db.get(table: 'tableA', item: hashA1, key1: 'a');
print(a1); // a1
final b0 = db.get(table: 'tableB', item: hashB0, key1: 'b');
print(b0); // b0
final b1 = db.get(table: 'tableB', item: hashB1, key1: 'b');
print(b1); // b1
// 添加并合并额外的数据。原始表不会改变
print('添加并合并额外的数据。原始表不会改变');
db = db.addData(
{
'tableA': {
'_data': [
{'a': 'a2'},
],
},
'tableB': {
'_data': [
{'b': 'b2'},
],
},
'tableC': {
'_data': [
{'c': 'c0'},
],
},
},
);
// 打印数据库中所有值的列表
print('打印数据库中所有值的列表');
final allPaths = db.ls();
print(allPaths.map((path) => '- $path').join('\n'));
// 创建相互连接的表
print('创建相互连接的表');
db = Rljson.fromJson({
'a': {
'_data': [
{
'value': 'a',
}
],
},
});
final tableAValueHash = db.hash(table: 'a', index: 0);
db = db.addData({
'b': {
'_data': [
{
'aRef': tableAValueHash,
}
],
},
});
final tableBValueHash = db.hash(table: 'b', index: 0);
// 当读取值时连接表
print('当读取值时连接表');
final a = db.get(
table: 'b',
item: tableBValueHash,
key1: 'aRef',
key2: 'value',
);
print(a); // a
// 提前对数据进行哈希处理
print('提前对数据进行哈希处理');
final hashedData = db.jh.apply({
'tableA': {
'_data': [
{'a': 'a0'},
{'a': 'a1'},
],
},
});
// 在添加数据时验证哈希
print('在添加数据时验证哈希');
db = Rljson.fromJson(hashedData, validateHashes: true);
}
更多关于Flutter数据处理插件rljson的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复