如何将Twitter API返回JSON的data字段单条推文存入Dart List<String>
Dart处理Twitter API响应提取推文JSON字符串方案
核心实现
该需求和响应中同时存在data和errors字段无关,无需额外处理errors字段即可完成目标,核心逻辑如下:
- 用Dart内置的
jsonDecode将原始响应字符串解码为Map结构 - 提取
data字段对应的推文数组 - 遍历数组中的每条推文对象,单独用
jsonEncode序列化为字符串后存入列表
核心处理代码
import 'dart:convert'; List<String> parseTweetJsonList(String rawResponseJson) { // 解码完整响应JSON final Map<String, dynamic> fullResponse = jsonDecode(rawResponseJson); // 提取推文数组,字段不存在时返回空列表避免空异常 final List<dynamic> tweetDataList = fullResponse['data'] ?? []; // 遍历每条推文单独序列化为字符串 return tweetDataList.map((tweetItem) => jsonEncode(tweetItem)).toList(); }
结合Flutter http库的完整请求示例
import 'package:http/http.dart' as http; import 'dart:convert'; Future<List<String>> getTwitterTweets() async { final response = await http.get( Uri.parse('你的Twitter API请求地址'), headers: { 'Authorization': 'Bearer 你的接口授权Token', 'Content-Type': 'application/json' }, ); if (response.statusCode == 200) { // 直接调用上面的解析方法返回结果 return parseTweetJsonList(response.body); } else { throw Exception('推文请求失败,状态码:${response.statusCode}'); } }
补充说明
- 若需要处理接口返回的错误提示,可单独提取
fullResponse['errors']字段做逻辑处理,和data字段的解析逻辑完全独立,互不影响 - 如果后续需要在ListView中渲染推文,更推荐直接将推文对象转为自定义实体类使用,性能远高于反复序列化/反序列化JSON字符串
内容的提问来源于stack exchange,提问作者aaa
相关产品推荐
相关产品推荐

