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

如何处理API返回的jsonl数据:确认JS中数据类型并新增对象

问题解答

1. API返回的JSONL数据在JS中的类型

接口返回的原始JSONL数据本质就是纯字符串类型。它没有对应的内置特殊数据结构,只是把多个独立的单行JSON值,用换行符\n拼接成了一段长文本:每一行是符合JSON规范的独立对象,行与行之间靠换行做分隔,和日常接触的“单个JSON对象字符串”没有本质类型区别,只是分隔规则不同。
你给出的示例响应,在JS中实际的存储值就是如下的字符串:

const rawJsonl = '{"plate": "pizza", "quantity": 3}\n{"plate": "pasta", "quantity": 2}'

2. 不转数组、保持JSONL格式新增行的操作

全程基于字符串拼接就能实现,不需要解析全量内容转成数组、也不需要逐行拆成对象再重组,核心操作分三步:

  • 把需要新增的对象,用JSON.stringify序列化成无换行的单行合法JSON字符串,避免手写JSON带来的转义错误
  • 检查原JSONL字符串的结尾:如果原内容最后已经是换行符结尾,直接在末尾拼接序列化好的新行;如果原内容没有结尾换行,先补一个换行符再拼接新行,防止新旧两行粘在一起破坏格式
  • 拼接完成的字符串就是符合规范的JSONL格式内容

注意:不要手写拼接硬编码的JSON字符串,比如直接写'{"plate": "hotdog", "quantity": 7}'这类文本,如果后续字段值存在特殊字符(比如引号、换行、转义字符),很容易破坏JSON合法性,用JSON.stringify处理可以保证输出的单行内容完全符合JSON规范。

可直接复用的代码示例

// 从接口获取的原始JSONL字符串
const originalContent = `{"plate": "pizza", "quantity": 3}
{"plate": "pasta", "quantity": 2}`;

// 准备要新增的对象
const newItem = { plate: "hotdog", quantity: 7 };
// 序列化为单行JSON
const newLine = JSON.stringify(newItem);

// 拼接生成新的JSONL内容
const finalJsonl = originalContent.endsWith('\n')
  ? `${originalContent}${newLine}`
  : `${originalContent}\n${newLine}`;

最终finalJsonl的内容就是符合要求的结果,全程没有将内容转换为数组,也没有修改原有内容的JSONL结构。


内容的提问来源于stack exchange,提问作者Omar El Malak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 08:15:08