javascript - 在数组中转换自定义 Json(对象)
问题描述
我需要这个 JSON 的帮助。我需要将一个json转换成下面的数组格式,问题是一个children属性可以无限生成,有人知道怎么做吗?我无法想象如何循环这个 Json 接口示例是:
`interface User {
id: string;
name: string;
children?: any;
level: number;
}`
``` {
'0': {
id: '2469bdab-23b5-4cb8-90c9-c609a49410b0',
name: 'Richard Paul M.',
children: {
'0': {
id: '97cd3a19-0f1c-4248-a84c-a1f5a0093a89',
name: 'Luis F. Doris',
children: {
'0': {
id: '6410eff5-5aff-46fd-bb08-ed90581007b4',
name: 'Maurice Rudolf Ludwig',
children: {
'0': {
id: '35996ee4-74a6-4343-ba5e-9700c24bee11',
name: 'Joseph E. James A.',
children: {
'0': {
id: '59fdebaf-0229-4d27-901d-4cfbb4cf81de',
name: 'Alan G. William',
children: {},
level: 4
}
},
level: 3
......
```
解决方案
您需要递归地将您的对象转换为一个数组,这很简单:
interface User {
id: string;
name: string;
children?: User[];
level: number;
}
const getUser = (user: User) => {
const result: User = {
id: user.id,
name: user.name,
level: user.level,
};
if (user.children) {
result.children = Object.keys(user.children).map(key => getUser(user.children[key]));
}
return result;
};
const inputJson = {}; // Your input object here;
const endResult = Object.keys(inputJson).map(key => getUser(inputJson[key]));
推荐阅读
- javascript - JS:如果将脚本放在正文的末尾,是否需要`load` 事件?
- javascript - 如何对图片数组使用缩放?
- .net - 安装需要.Net Famework Verison 3.5。Visual Studio 安装程序项目,即使在 windows 功能中启用了 3.5
- python - 为什么我在全局变量中转换局部变量时会出现 NameError?
- vba - 如何在将新数据插入访问表之前检查现有数据?
- excel - Excel - 突出显示每行中的最低价格
- oracle - Oracle 表单从现有记录中插入一条新记录
- python - 我有一个数据集,其列是单词。如何将相同的列相互添加?
- html - 在 Github 上创建目录 (TOC):有没有办法可以摆脱要点,从而获得更清晰的 TOC?
- firebase - yield 表达式所隐含的类型必须是可分配的