跳到主要内容

把每行一项的列表转 JSON 数组:加引号、逗号、方括号一步到位

每行一项的纯文本列表怎么变成合法 JSON 数组?本文讲清加引号补逗号包方括号的规则,字符串数组和数字数组的区别,以及去重去空行后直接粘进代码和配置的做法。

发布于 作者 李雷
#JSON #数据转换 #开发工具

把每行一项的列表转 JSON 数组

手里有一列数据,每行一项,要的却是一个 JSON 数组。最常见的场景:从表格复制了一列国家代码,从日志里抠出一批 ID,从聊天里粘来一串标签,目标文件偏偏要 ["a", "b", "c"] 这种格式。手敲方括号、给每一项补引号、行尾加逗号、最后一行别多逗号,四十行下来漏一个符号整段就解析失败。这件事完全可以交给工具,用 列表转 JSON 数组 粘进去就出结果。

每行一项到 JSON 数组,中间发生了什么

把纯文本列表变成合法 JSON 数组,要做三件事,缺一项就跑不通:

  • 给每一项两边加上双引号,变成 JSON 字符串
  • 项与项之间补英文逗号,但最后一项后面不能有逗号
  • 整体用方括号 [] 包起来

听起来简单,坑都在细节里。某一项内部本身带了双引号、反斜杠或制表符,就得转义成 \"\\\t,否则字符串提前闭合,整个数组崩掉。所以正确做法不是字符串拼接,而是走真正的 JSON 序列化,让序列化器负责转义和补逗号,你只管粘数据。

一个真实的三行例子

我自己最常用的就是最朴素那种。输入三行纯文本:

apple
banana
cherry

关掉类型推断,输出就是一行干净的字符串数组:

["apple","banana","cherry"]

三个值各自包好引号,中间两个逗号,最后一项后面没有多余逗号,外面一对方括号。复制,贴进配置文件,parser 不会报错。如果想看 diff 更舒服,切成 2 空格美化,它会换行缩进排好,语义完全一样。

字符串数组还是数字数组,看目标要什么

这是最容易踩的一脚。同样一列 1 2 3,关掉类型推断你拿到的是字符串数组 ["1","2","3"],打开类型推断才是数字数组 [1,2,3]。两者不能混用:接口要的是 {"ids":[1,2,3]} 真数字,你给一串带引号的字符串,后端八成直接拒掉;反过来给配置里的代码列表,代码反而该留成字符串,免得把 007 当成数字 7 改坏。

类型推断是严格的,这点很关键。只有正好是干净数字、truefalsenull 的行才转。像 0x10、版本号 1.2.3、编号 007-A、带加号横线的电话号码,都会原样留成字符串,不会被悄悄解析坏。所以推断该不该开,只取决于你下游要的是真数字还是文本,不用担心它乱猜。

顺手把脏数据清掉:去重和去空行

从别处复制来的列表往往不干净:行尾带空格、中间夹空行、还有重复项。一次转换就能顺手收拾完:

  • 去空白:每行先掐掉首尾空格再处理,这样 apple apple 算同一项
  • 跳过空行:中间的空行不会变成空字符串项 "",数组里不留垃圾
  • 去重:保留每一项第一次出现的位置,后面重复的丢掉,a b a c 收成 ["a","b","c"]
  • 排序:配合去重用,结果按字母排好,版本库里的 diff 才稳定

去重是按你看到的文本比较的,跑在类型推断之前,所以不会出现「先把 42 推断成数字再去重」的混乱。要单独把一批行排序再处理,也可以先过一遍 文本排序工具,再转成数组。

反过来:JSON 数组拆回多行

工具是双向的。同事在聊天里甩来一长串单行 JSON 数组,问你里面有啥,切到反向粘进去,就能按每行一个元素来读。字符串元素打印时不带外层引号,扫一眼就看清值;数字、布尔、null 和嵌套对象按它们的 JSON 文本显示;数组写坏了少了收尾方括号,会直接亮出能看懂的报错,而不是给你一个空框。如果拿到的是结构更复杂的多层 JSON,想要整体格式化看清层级,再配上 JSON 格式化工具 一起用更顺手。

给代码和配置粘数据时的几个习惯

收尾说几条实用经验:一是复制前先想清楚下游要字符串还是数字,再决定类型推断开不开,这一步定错后面全错;二是涉及保密的编号、邮箱、密钥列表,用复制按钮粘结果,别用分享链接,因为链接会把输入写进查询字符串;三是给配置文件用时优先选美化输出,将来改起来和看 diff 都省心。整件事的价值就在于把加引号、补逗号、包方括号、转义这套机械活全部接管,你只负责粘进每行一项的列表,拿走一个不会解析失败的数组。


Made by Toolora · Updated 2026-06-13