You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为SQLite导出数据的键添加引号以适配API请求格式?

如何给SQLite查询结果的键添加双引号以适配API格式?

嘿,我来帮你搞定这个问题!你现在遇到的情况是:从SQLite查出来的数据,打印出来是键不带双引号的格式(比如{count: 3, minced: 0...}),但API要求的是标准JSON格式(键带双引号,比如{"size_id":59,"count":2...})。其实解决起来很简单,核心就是把Dart的Map列表正确序列化为标准JSON字符串。

问题根源

你看到的不带双引号的格式,其实是Dart中Map对象调用toString()后的输出,并不是标准的JSON。而API需要的是符合JSON规范的数据,这时候就需要用Dart自带的序列化工具来处理。

具体解决方案

我们可以使用dart:convert库中的jsonEncode方法,它会自动把Dart的List<Map>转换成键带双引号的标准JSON字符串。

方法1:在调用数据时进行序列化

先获取SQLite的数据,再转成JSON:

// 记得导入dart:convert库
import 'dart:convert';
import 'package:http/http.dart' as http; // 如果用http发请求的话

// 示例:发送数据到API的方法
Future<void> sendCartDataToApi() async {
  DatabaseHelper dbHelper = DatabaseHelper();
  // 获取数据库中的购物车数据(注意类型转换)
  List<Map<String, dynamic>> cartData = await dbHelper.getCartProduct() as List<Map<String, dynamic>>;
  
  // 关键一步:序列化为标准JSON字符串
  String requestBody = jsonEncode(cartData);
  
  // 发送POST请求到API
  final response = await http.post(
    Uri.parse('你的API接口地址'),
    headers: {'Content-Type': 'application/json'}, // 必须指定JSON格式头
    body: requestBody,
  );
  
  // 处理API响应
  if (response.statusCode == 200) {
    print('数据发送成功啦!');
  } else {
    print('发送失败,状态码:${response.statusCode}');
  }
}

方法2:在DatabaseHelper中新增方法直接返回JSON

如果经常需要用这个格式,也可以在你的DatabaseHelper类里加一个方法,直接返回序列化后的JSON字符串:

// 先导入dart:convert
import 'dart:convert';

class DatabaseHelper {
  // ... 其他现有代码 ...
  
  Future<String> getCartProductAsJson() 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 jsonEncode(result);
  }
}

调用的时候就更简单了:

String jsonData = await dbHelper.getCartProductAsJson();
// 直接把jsonData作为请求体发送即可

为什么这能解决问题?

jsonEncode会严格按照JSON规范处理数据:

  • 自动给所有键加上双引号
  • 处理null值(比如你的chops_id: null会转成"chops_id": null)
  • 处理字符串类型的字段(比如notes: bzbznzjz会转成"notes": "bzbznzjz")

这样生成的JSON格式就完全和API要求的一致了。

内容的提问来源于stack exchange,提问作者Mo'men L-Ashmawy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:03:16