Flutter如何将Dialogflow返回的字符串转为可解析的JSON格式
Flutter 处理flutter_dialogflow返回数据的方案
你打印的内容本质是Dart Map/List结构的默认toString输出,不是标准JSON字符串,
getListMessage()接口返回的本身就是已经解析完成的可直接操作的Dart结构化数据,不需要额外做字符串转JSON的操作。
如果确实需要生成标准JSON字符串或者做序列化处理,按照下面步骤操作:
- 第一步:引入Dart内置的转换库,无需额外安装依赖
import 'dart:convert'; - 第二步:将返回的结构化数据转为标准JSON字符串
AIResponse aiResponse = await dialogflow.detectIntent(query); List<dynamic> messageList = aiResponse.getListMessage(); // 转为标准JSON字符串 String standardJson = jsonEncode(messageList); // 打印出来就是带双引号的标准JSON格式 print(standardJson); - 第三步:如果需要把JSON字符串转回可操作的Dart对象,使用jsonDecode方法
dynamic parsedData = jsonDecode(standardJson); // 示例:提取欢迎语 String welcomeText = parsedData[1]['payload']['message']; // 示例:遍历FAQ列表 List faqList = parsedData[1]['payload']['metadata']['payload']; for (var faq in faqList) { print('标题:${faq['title']},描述:${faq['message']}'); }
使用数据前建议做非空校验和类型判断,避免空指针或类型转换异常,空安全场景下可以搭配?.、!运算符使用
内容的提问来源于stack exchange,提问作者Khabbab_h
相关产品推荐
相关产品推荐

