piapia123
zh

矩阵与 JSON 互转

转换

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

把一段矩阵文本(`1, 2, 3` 一行,从 Excel、MATLAB、NumPy 里复制出来的那种)转成 JSON 的二维数组,或者反过来把 JSON 数组渲染成对齐的矩阵文本。与站内的表格转换不同,这里数值保持数值类型 —— 产物是 `[[1,2],[3,4]]` 而不是 `[["1","2"],["3","4"]]`。一份要拿去计算的矩阵,值是字符串还是数字,就是能不能直接用的问题。代价是 `007` 这类带前导零的单元格会变成 `7`;需要原样保留字符串的表格请用表格转换工具。行长度不一致时会报出第一处不一致的行号,而不是补齐或截断 —— 补出来的 0 和截掉的值都会让下游算出错的结果,而那个错误在数据里完全看不出来。

功能

  • 两个方向:矩阵文本转 JSON 数组、JSON 数组渲染成矩阵文本
  • 数值保持数值类型(数字就是数字,不是字符串)
  • 逗号、制表符、空白、分号都能当分隔符,也可以自动判断
  • 自动判断方向:以 [ 开头按 JSON 处理,否则按矩阵文本
  • 行长度不一致时报出第一处不一致的行号
  • 矩阵文本渲染成对齐的列:数字右对齐、文本左对齐,中英混排按显示宽度算
  • 一维 JSON 数组当成只有一行,不是一个错误
  • 往返可逆:文本转 JSON 再转回来,数值不变
  • CRLF 与 LF 都接受
  • 全部在浏览器本地完成,数据不外传

使用方法

  1. 把矩阵文本或 JSON 数组粘进输入框
  2. 方向通常不用选 —— 以 [ 开头会当 JSON 处理
  3. 分隔符认不出来时手动指定一个
  4. 复制结果

常见问题

它和「表格转换」有什么区别?
表格转换处理带表头的表格,值一律按字符串输出,因为 `007` 这样的前导零一旦被当成数字就会丢。这里处理的是没有表头、纯数值的矩阵,值按数字输出 —— 产物要喂给程序做计算,是字符串还是数字决定了能不能直接用。所以:要保留原始文本用表格转换,要拿到能算的数值矩阵用这个。
为什么 007 变成了 7?
因为这一列是数值矩阵的一部分,`007` 在这里被解释成数字 7。这是「数值保持数值类型」这条规则的必然代价 —— 两者不可能同时满足(JSON 里 `7` 与 `"007"` 是两种不同的值)。需要保住前导零的场合(编号、邮编、工号),请用表格转换工具,它的输出是一律按字符串的。
行列数不一样会怎样?
直接报错,并告诉你第几行与第 1 行不一致。矩阵的定义就是矩形,补齐或截断都会静默改掉数据:补 0 会让平均值算错、截断会让一整列消失,而这两种错误在数据本身里看不出来。同样地,JSON 那边如果 `[[1,2],3]` 这种「一半是数组一半是单个值」的形状,也会报出来 —— 它不满足任何一种合法形状。
为什么制表符分隔时不补齐列宽?
因为 `\t` 本来就是用来对齐的,再叠一层空格只会让产物在不同编辑器里宽度飘忽 —— 每个编辑器对制表位的宽度设置都不一样。其余分隔符下会按显示宽度补齐(汉字占两格),并且数字右对齐、文本左对齐,这样一列数字的量级一眼就能比出来。
数据会被上传吗?
不会。转换全在浏览器内存里完成,页面不发送任何请求,断网也能用。

相关工具