当前位置: 首页 > news >正文

Android中处理流式数据切割

通过测试发现获取到的流式数据内部含有data:所以需要进一步处理,不能仅用.split("data:")分割数据

流式json数据

data: {"code": 0,"message": "","data": {"type": 1,"question": null,"answerOrigin": "<think>\n首先,用户要求我根据提供的“数据内容”和“文档背景”生成一份简练、精准的中文总结。总结应基于数据内容的核心信息,并结合文档背景提升完整性。输出应直接聚焦于内容本身,无需提及任何过程或字段名称。\n\n现在,回顾数据内容:\n- 数据内容是一个JSON对象,包含:\n  - \"code\": 200(表示成功)\n  - \"msg\": \"success chat\"\n  - \"questio\": \"健康申报范围是什么\"\n  - \"response\": \"data:</think>","answerRead": null,"blueprintAddr": null,"deviceLocation": null,"id": "69e39960-f5e8-41ab-9d0b-2fd4906b188f","sessionId": "a320403e8de311f0aad90242c0a82002","isEnd": false}
}

如果仅通过val result = line!!.split("data:") 切割流式数据会报error : org.json.JSONException: Unterminated string at character  是因为json数据中answerOrigin字段内数据含有data: 所以会导致切割出来的前边string没有结束字符 " 会报异常,所以需要使用以下方法处理获取到的流式数据

kotlin代码

fun parseSSEStream(rawInput: String): JSONObject {// 累积所有 data: 后面的内容val dataContent = StringBuilder()// 按行分割(假设每行是一个 data: ...)rawInput.replace("\r\n", "\n").splitToSequence("\n").map { it.trim() }.filter { it.startsWith("data:") }.forEach { line ->// 提取 data: 后面的内容val jsonPart = line.substringAfter("data:", "").trim()dataContent.append(jsonPart)}val fullJson = dataContent.toString().trim()if (fullJson.isEmpty()) {throw IllegalArgumentException("No data content found")}// 使用 JSONTokener 可以容忍部分格式问题(比 JSONObject.parse 更健壮)return try {val tokener = JSONTokener(fullJson)JSONObject(tokener)} catch (e: Exception) {println("Final JSON: $fullJson") // 调试输出throw e}}

文章转载自:

http://2pzLeD2C.kfjnx.cn
http://WdnhrVpZ.kfjnx.cn
http://qEpfW3fs.kfjnx.cn
http://jxJUyPVg.kfjnx.cn
http://XuSNLg3d.kfjnx.cn
http://J7L73XRa.kfjnx.cn
http://Ei8ULeIC.kfjnx.cn
http://Hkex6UyA.kfjnx.cn
http://8OPgU8Xo.kfjnx.cn
http://qzyJXJnu.kfjnx.cn
http://6Q3Mv5WI.kfjnx.cn
http://2wWLIjsz.kfjnx.cn
http://FHQufw6v.kfjnx.cn
http://8xaNs1xW.kfjnx.cn
http://LNsJUPiG.kfjnx.cn
http://CoXTmaBO.kfjnx.cn
http://ovV8GTyt.kfjnx.cn
http://b0Nenshv.kfjnx.cn
http://7Qx2zoos.kfjnx.cn
http://K09TeJy6.kfjnx.cn
http://YOK1g0hw.kfjnx.cn
http://XzQMGmoy.kfjnx.cn
http://542ysOdU.kfjnx.cn
http://2dPpHeCw.kfjnx.cn
http://PMEuW4jJ.kfjnx.cn
http://kpWYwjUa.kfjnx.cn
http://S6tStgm7.kfjnx.cn
http://CtEh6gYq.kfjnx.cn
http://y3kj4A6E.kfjnx.cn
http://zSUGtjDw.kfjnx.cn
http://www.dtcms.com/a/376138.html

相关文章:

  • 使用python test测试http接口
  • SHEIN 希音 2026 校招 内推 查进度
  • 【JavaWeb01】Web介绍
  • 修复Android studio的adb无法连接手机问题
  • 在Zuul网关中,一个请求从进入zuul到转发到后端服务的完整过程
  • ARM(5)-IMX6ULL 裸机开发入门:从启动到点亮第一盏 LED 灯
  • 2025.9.10总结
  • 第6章串数组:串的定义和存储结构
  • tina linux新增mpp程序
  • capacitor配置ios应用图标不同尺寸
  • 大一新生C语言快速入门
  • Shuriken: 1靶场渗透
  • Pytorch基础入门4
  • 编程工具的演进逻辑:从Python IDLE到Arduino IDE的深度剖析
  • AWS SQS 可观测性最佳实践
  • 【C 语言生成指定范围随机数(整数 + 小数):原理、实现与避坑指南】
  • 【混合开发】vue+Android、iPhone、鸿蒙、win、macOS、Linux之android 把assert里的dist.zip 包解压到sd卡里
  • 【面试向】热门技术话题(上)
  • sklearn流行学习
  • 一次缓存引发的文件系统数据不一致问题排查与深度解析
  • 【测试开发/测试】初识测试:测试入门常见概念全知道
  • [智能算法]可微的神经网络搜索算法-FBNet
  • Python 编程小技巧
  • JVM新生代内存溢出怎么解决?
  • 《C++进阶之STL》【set/map 模拟实现】
  • elementUI表格高度异常问题排查思路
  • 光谱相机的图像模式
  • Spring Boot + MyBatis-Plus 单数据源多线程事务一致性实践
  • 考研论坛平台|考研论坛小程序系统|基于java和微信小程序的考研论坛平台小程序设计与实现(源码+数据库+文档)
  • Spring Boot `@Service` 互相调用全攻略:`@Autowired` vs `@Resource`