那是我存储在数据库中的数据
[{计数:3,切碎:0,category_id:3,size_id:63,chops_id:null,cookie_id:null,choole:null,注释:},{count:4,切碎:0,category_id:3, size_id:62,chops_id:null,cookie_id:null,choole:null,注释:},{count:2,切碎:2,category_id:2,size_id:49,chops_id:8,cookie_id:8,choole:2,注释:bzbznzjz}]
以及我需要发送给API的内容
[{“ size_id”:59,“ count”:2,“ category_id”:2,“ chops_id”:null,“ cookie_id”:null,“ choole”:null,“ notes”:“ jgg”,“ minced“:0},{” size_id“:63,” count“:3,” category_id“:2,” chops_id“:4,” cookie_id“:8,” choole“:2,” notes“:” tvv“ ,“切碎”:1}]
我需要将此“”添加到我的密钥中,我该怎么做? 那就是我的代码
import 'dart:async';
import 'dart:io';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';
import 'Models/product.dart';
class DatabaseHelper {
Product _product;
static final DatabaseHelper _instance = new DatabaseHelper.internal();
factory DatabaseHelper() => _instance;
static Database _db;
Future<Database> get db async {
if (_db != null) return _db;
_db = await initDb();
return _db;
}
DatabaseHelper.internal();
initDb() async {
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, "main.db");
var theDb = await openDatabase(path, version: 1, onCreate: _onCreate);
return theDb;
}
void _onCreate(Database db, int version) async {
await db.execute(
"CREATE TABLE Product(id INTEGER PRIMARY KEY, count INTEGER, minced INTEGER, rate DOUBLE, category_id INTEGER, size_id INTEGER, chops_id INTEGER, cookie_id INTEGER, choole INTEGER, notes TEXT, name TEXT, image TEXT, size_name TEXT, category_name TEXT)"); }
Future<int> saveProduct(Product product) async {
var dbProduct = await db;
int res = await dbProduct.insert("Product", product.toMap());
print(product.toMap());
return res;
}
Future<List> getAllProduct() async {
var dbProduct = await db;
var result = await dbProduct.rawQuery("SELECT * FROM Product");
return result.toList();
}
Future<List> getCartProduct() async {
var dbProduct = await db;
var result = await dbProduct.rawQuery("SELECT count, minced, category_id, size_id, chops_id, cookie_id, choole, notes FROM Product");
return result;
}
Future<int> getCount() async {
var dbProduct = await db;
return Sqflite.firstIntValue(
await dbProduct.rawQuery("SELECT COUNT(*) FROM Product"));
}
Future<Product> getProduct(int id) async {
var dbProduct = await db;
var result = await dbProduct.rawQuery("SELECT * FROM Product WHERE id = $id");
if (result.length == 0) return null;
return new Product.fromMap(result.first);
}
Future<int> deleteProducts(Product product) async {
var dbProduct = await db;
int res = await dbProduct
.rawDelete('DELETE FROM Product WHERE id = ?', [product.id]);
return res;
}
update(Product product) async {
var dbProduct = await db;
int res = await dbProduct.update("Product", product.toMap(),
where: "id = ?", whereArgs: <int>[product.id]);
return res > 0 ? true : false;
}
}
答案 0 :(得分:1)
兄弟,据我所知,存储在数据库中的数据不在Json字符串中,因此首先需要做的是
将用户视为模型类
HttpClient
每次将数据保存到数据库时,都应使用
class User {
final String name;
final String email;
User(this.name, this.email);
User.fromJson(Map<String, dynamic> json)
: name = json['name'],
email = json['email'];
Map<String, dynamic> toJson() =>
{
'name': name,
'email': email,
};
}
这样,您将在数据库中得到“。”
要将数据取回json,只需在此处传递存储的字符串
String json = jsonEncode(user);
String json = jsonEncode(List<user>);
这将解决您的问题
答案 1 :(得分:0)
只需在数据类中添加toMap
方法即可。例如:
class DataClass {
int id;
String message;
Map<String, dynamic> toMap() {
return {
'id': id,
'message': message
}
}
}
答案 2 :(得分:0)
通过API,我想您的意思是Web API。如果期望使用json(如果这就是“”的意思),则应该jsonEncode
SecurityContext
您的数据(列表或地图)
答案 3 :(得分:0)
据我所见,您只需要从对象中制作json。在产品类中添加toJson,然后调用它即可。
int res = await dbProduct.insert("Product", product.toMap());
像这样:
int res = await dbProduct.insert("Product", product.toJson());
在这种情况下,这是序列化doc总是有帮助的。