首页 > 解决方案 > 在数组中转换自定义 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
              ......
```

标签: javascriptarraysjsontypescript

解决方案


您需要递归地将您的对象转换为一个数组,这很简单:

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]));

推荐阅读