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

Flutter开发:如何将远程返回的.txt格式响应转换为JSON数据

解决方案

方法1:直接解析(适合快速调试/简单场景)

  • 首先引入Dart内置的转换库:import 'dart:convert';
  • 拿到你解码得到的字符串后,调用jsonDecode方法即可直接转换为可操作的Map结构,示例代码如下:
void handleData() async {
  String jsonStr = await fetchData();
  if (jsonStr != "Error") {
    // JSON字符串转Map
    Map<String, dynamic> jsonData = jsonDecode(jsonStr);
    // 直接读取对应字段
    bool isSuccess = jsonData['success'];
    List<dynamic> dataList = jsonData['data'];
    // 遍历data数组操作数据
    for (var item in dataList) {
      String id = item['id'];
      String number = item['number'];
      String text = item['text'];
      print('id:$id, 编号:$number, 文本:$text');
    }
  }
}

注意:你提供的JSON示例中data数组最后一个对象末尾多了一个多余逗号,属于JSON语法错误,若实际接口返回真的带了这个逗号,需要先执行jsonStr = jsonStr.replaceAll(', }', '}').replaceAll(', ]', ']')处理多余逗号后再解析,否则会抛出解析异常。

方法2:模型类序列化(推荐正式环境使用)

直接用dynamic类型没有类型校验,运行时容易出现字段名写错、类型不匹配的崩溃,推荐定义对应的数据模型来解析,使用示例如下:

  1. 首先定义数据模型:
// 单条数据条目模型
class DataItem {
  final String id;
  final String number;
  final String text;
  DataItem({required this.id, required this.number, required this.text});

  factory DataItem.fromJson(Map<String, dynamic> json) {
    return DataItem(
      id: json['id'] as String,
      number: json['number'] as String,
      text: json['text'] as String,
    );
  }
}

// 接口响应整体模型
class ApiResponse {
  final bool success;
  final List<DataItem> data;
  ApiResponse({required this.success, required this.data});

  factory ApiResponse.fromJson(Map<String, dynamic> json) {
    var dataList = json['data'] as List;
    List<DataItem> items = dataList.map((i) => DataItem.fromJson(i)).toList();
    return ApiResponse(
      success: json['success'] as bool,
      data: items,
    );
  }
}
  1. 调用解析:
void handleData() async {
  String jsonStr = await fetchData();
  if (jsonStr != "Error") {
    Map<String, dynamic> jsonMap = jsonDecode(jsonStr);
    ApiResponse response = ApiResponse.fromJson(jsonMap);
    // 直接调用模型属性即可,有完整的类型提示和编译校验
    print('请求是否成功:${response.success}');
    for (var item in response.data) {
      print(item.text);
    }
  }
}

内容的提问来源于stack exchange,提问作者P-J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:42:02