如何使用TypeScript将JSON数组名称替换为其直接字段名
TypeScript实现指定JSON结构转换
输入结构
{ "singleField": [ { "fieldName": "company", "fieldValue": "xyz" } ] }
目标输出结构
{ "company": [ { "fieldValue": "xyz" } ] }
实现代码
首先定义TypeScript类型约束,保证类型安全:
// 输入数组项的类型 interface InputFieldItem { fieldName: string; fieldValue: any; } // 完整输入数据类型 interface InputData { singleField: InputFieldItem[]; } // 输出数据类型 type OutputData = Record<string, Array<{ fieldValue: any }>>;
然后编写核心转换函数:
function transformStructure(input: InputData): OutputData { const output: OutputData = {}; input.singleField.forEach(item => { const { fieldName, fieldValue } = item; // 初始化目标键对应的数组(如果不存在) if (!output[fieldName]) { output[fieldName] = []; } // 向目标数组添加仅含fieldValue的对象 output[fieldName].push({ fieldValue }); }); return output; }
使用示例
// 模拟输入数据 const rawInput: InputData = { "singleField": [ { "fieldName": "company", "fieldValue": "xyz" } ] }; // 执行转换并打印结果 const transformedResult = transformStructure(rawInput); console.log(JSON.stringify(transformedResult, null, 2));
逻辑说明
- 通过TypeScript接口明确输入输出的结构,避免类型不匹配问题
- 遍历输入的
singleField数组,提取每个项的fieldName和fieldValue - 以
fieldName作为新对象的键,将仅包含fieldValue的对象存入对应数组 - 自动支持多个同
fieldName的场景(若输入数组中有多个相同fieldName的项,会全部存入同一个目标数组)
内容的提问来源于stack exchange,提问作者amid
相关产品推荐
相关产品推荐

