当前位置: 首页 > 知识库问答 >
问题:

如何从Json数据创建TypeScript类?[副本]

蒋烨然
2023-03-14

我使用Angular调用外部API。Json数据的格式如下:

[
      {
        "AccessGroupsIdList": [],
        "FirstName": "Greg",
        "LastName": "Tipton",
        "LocationIdList": [],
        "PermissionProfile": {
          "Name": "Agent",
          "PermissionProfileId": {
            "ID": "xy678219-bd7c-103d-b56b-1f1234a85990"
          },
          "Type": 3
        },
        "ManagerName": "Gilchrist, George",
        "Status": true,
        "UserGroupID": {
          "ID": "00000000-0000-0000-0000-000000000000"
        },
        "UserGroupName": "ROOT",
        "UserId": {
          "ID": "4445cc66-819a-4da0-8fbf-d0bb8ce65941"
        }
      }
    ]

既然json数据是嵌套的,我如何在typescript中创建一个类来读取它?

export class Employees
{
    AccessGroupsIdList: string[];
    FirstName: string;
    LastName: string;
    LocationIdList : number[];
    PermissionProfile ??
    ManagerName: string;
    Status: boolean;
    UserGroupID ??
    UserGroupName : string;
    UserId ??
}

请指导如果PermissionProfile,PermissionProfile将是独立的嵌套类?

我该如何申报?

共有2个答案

贺飞星
2023-03-14

尝试如下声明TypeScript类结构:

export class Employees
{
    AccessGroupsIdList: string[];
    FirstName: string;
    LastName: string;
    LocationIdList : number[];
    PermissionProfile: PermissionProfile;
    ManagerName: string;
    Status: boolean;
    UserGroupId: UserGroupID;
    UserGroupName : string;
    UserId: UserID;
}

export class PermissionProfile 
{
    name: string;
    permissionProfileId: PermissionProfileID;
    type: string;
}

export class PermissionProfileID
{
    id: string;
}
 
export class UserGroupID
{
    id: string;
}

export class UserID
{
    id: string;
}

我建议使用Id(例如,UserGroupId)统一命名属性名称。nametype类属性名称在TypeScript中有效(与C#语法不同)。

夹谷弘亮
2023-03-14

为了扩展Andrew Halil的回答,我将在您的定义中使用接口而不是类,因为似乎没有涉及任何类方法;您只是描述从服务器返回的JSON对象的形状

export interface Employee
{
    AccessGroupsIdList: string[];
    FirstName: string;
    LastName: string;
    LocationIdList : number[];
    PermissionProfile: PermissionProfile;
    ManagerName: string;
    Status: boolean;
    UserGroupId: ID;
    UserGroupName : string;
    UserId: ID;
}

export interface PermissionProfile 
{
    name: string;
    permissionProfileId: ID;
    type: string;
}

export interface ID
{
    id: string;
}
 

现在对于一个实现,我不太使用Angular,但是您可以这样做来输入条目


async function listEmployees(): Promise<Employee[]> {
// Make a fetch call to the API endpoint
   const data = await fetch('https://some-api-endpoint.web/employees')
      // if the response comes back ok, return the JSON-ified response.
      .then(res => {
          if(res.ok) return res.json()
          return [];
      });
    // Instruct typescript that "data" is to be treated as an array of Employee elements.
    return data as Employee[]
}
 类似资料:
  • “我正在设置一个文件浏览器,并将文件夹的名称保存在数据库中。任何数量的文件夹都可以保存在数据库中,从保存的数据中,我想创建一个json树。 这是我的数据库表结构 parent\u id是一个外键,用于引用文件夹id。 这是我试图从上述数据库创建的json树结构,将来将添加更多父文件夹和子文件夹。是否可以从上面的表结构中创建json树?有人能帮我吗?

  • 问题内容: 我需要使用与完全相同的方法创建一个类。 用Java做到这一点的最佳方法是什么? 我知道我不能照原样扩展String类。我没有在寻找需要复制的源代码的解决方案。例如,假设我需要名为的自定义类中的功能,该类具有相应的’myLength()`方法。 实施的最佳方法是什么? 我不是在寻找各种算法来找出字符串的长度,而是在重用的方法。现在,一旦我准备好上课,就可以在任何地方进行自定义操作了。 问

  • 本文向大家介绍JavaScript从JSON数据创建数组?,包括了JavaScript从JSON数据创建数组?的使用技巧和注意事项,需要的朋友参考一下 要根据JSON数据创建数组,请使用from JavaScript的概念。假设以下是我们的数据- 以下是根据上述数据创建数组的代码- 示例 要运行上述程序,您需要使用以下命令- 在这里,我的文件名为demo82.js。 输出结果 这将产生以下输出-

  • 问题内容: 是否有可能创建python函数的真实副本?最明显的选择是http://docs.python.org/2/library/copy.html,但我在这里看到: 它通过不变地返回原始对象来“复制”函数和类(浅层和深层)。 我需要一个真实的副本,因为我可能会更改函数的某些属性。 更新: 我知道评论中提到的所有可能性。我的用例基于元编程,其中我根据一些声明性规范构造了类。完整的细节对于SO来

  • 问题内容: 好的,我一直在绞尽脑汁尝试从mysql构建JSON数组。数组必须采用以下格式。我正在使用fullcalendar,并希望使日历上的事件动态化。下面是构建数组的代码,但当前它无法从mysql获取信息 问题答案: 你想做这样的事情吗? 它以以下格式返回json字符串: 或类似这样的东西:

  • 问题内容: 我用来将Java对象序列化/反序列化为json。我想在中显示它,并且需要一个架构来做出更好的描述。这将允许我编辑对象并添加比实际更多的数据。 可以提供json模式吗? 是否有其他框架具有该功能? 问题答案: Gson库可能不包含类似的功能,但是您可以尝试使用Jackson库和jackson- module-jsonSchema 模块解决您的问题。例如,对于以下类别: 这个程序: 打印以