You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

TypeScript项目中JSON对象格式转换需求:拆分表头与数据列并封装为指定结构

TypeScript JSON数组转结构化表格数据格式

刚好做过类似的需求,给你写个完整的TypeScript解决方案,兼顾类型安全和边界情况处理:

第一步:定义原始数据的类型接口

先给你的输入数据定义类型,写代码时能有类型提示,避免低级错误:

interface OriginalDataItem {
  id: string;
  ser: string | null;
  IP: string | null;
  host: string;
  type: string;
  auth: string;
}

第二步:编写转换函数

这个函数会把你的数组转换成目标格式,还特意处理了空输入的边界情况:

function transformToTableFormat(data: OriginalDataItem[]): { values: (string | null)[][] } {
  // 空数组直接返回空结构,避免后续代码报错
  if (data.length === 0) {
    return { values: [] };
  }

  // 建议手动指定表头顺序(比依赖对象键顺序更可靠,不怕后端返回键顺序变化)
  const headers: (keyof OriginalDataItem)[] = ["id", "ser", "IP", "host", "type", "auth"];

  // 把每个对象转换成对应的值数组,严格匹配表头顺序
  const dataRows = data.map(item => headers.map(key => item[key]));

  // 组合表头和数据行,封装到values属性中
  return {
    values: [headers, ...dataRows]
  };
}

第三步:使用示例

把你的原始数据传进去,就能得到完全符合预期的结果:

// 你的原始输入数据
const inputData: OriginalDataItem[] = [
  { "id": "1", "ser": null, "IP": null, "host": "", "type": "Web", "auth": "" },
  { "id": "2", "ser": null, "IP": "191.174.230.02", "host": "", "type": "Proxy", "auth": "" }
];

const transformedResult = transformToTableFormat(inputData);
console.log(transformedResult);

补充说明

  • 手动指定表头是为了避免依赖对象键的顺序——虽然ES2015+之后对象键顺序会被保留,但如果数据来源不可控(比如后端返回的键顺序可能调整),手动指定能确保输出顺序完全符合你的需求;
  • 函数里加了空数组判断,避免输入为空时调用Object.keys(data[0])出现报错;
  • 全程用TypeScript类型系统做约束,能提前发现键名拼写错误、值类型不匹配等问题。

内容的提问来源于stack exchange,提问作者print

火山引擎 最新活动