Typescript:将 JSON 对象转换为类/接口对象

2024-02-29

我正在尝试将 API 响应转换为打字稿类/接口。

这里,API 返回具有某些属性的对象列表,但我只需要响应对象的少数属性。

API响应示例:



    [{
    'Id' : 1,
    'Name': 'test',
    'Description: 'Test',
    'PropertyX': 'x',
    'PropertyY' : 'y'
    },
    ...]
  

打字稿类




    Class Response {
     Id: string;
     Name: string;
    }

  

您能否建议我将 JSON 对象转换为打字稿对象的最佳方法是什么?


我建议创建一个界面来描述您在应用程序中使用的属性并忽略其余内容:

因此,假设您的回复如下所示:

const response = [{
      'Id' : 1,
      'Name': 'test',
      'Description': 'Test',
      'PropertyX': 'x',
      'PropertyY' : 'y'
    }, {
      'Id' : 2,
      'Name': 'test2',
      'Description': 'Test2',
      'PropertyX': 'x2',
      'PropertyY' : 'y2'
    }
];

而你只对Id and Name,只需创建一个像这样的接口:

interface IMyObject {
  Id: String;
  Name: String;
}

然后在应用程序的其余部分中,您可以将响应投射到IMyObject[]

例如,如果函数使用您的响应:

function myFunction(response: IMyObject[]) { ... }

或者如果您需要返回该类型,您可以像这样进行直接转换:

return response as MyObject[];

编辑:正如下面的评论中提到的,只需将您的对象转换为IMyObject不会删除您不感兴趣的额外属性。

为此,请使用.map:

const formattedResponse: IMyObject = reponse.map(item => {
  Id: item.Id,
  Name: item.Name
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Typescript:将 JSON 对象转换为类/接口对象 的相关文章

随机推荐

  • 在测试期间注入@Autowired私有字段

    我有一个组件设置 本质上是应用程序的启动器 它的配置如下 Component public class MyLauncher Autowired MyService myService other methods MyService 注释为
  • 在编译时获取 std::array 中的元素数量

    以下是有效的 C 代码吗 为什么不呢 std array
  • Go 语法和接口作为函数的参数

    我是Go编程语言的新手 最近遇到以下代码 func rec ContactRecord Less other interface bool return rec sortKey Less other ContactRecord sortKe
  • 在c#中自定义ToolStripMenuItems

    我需要在我的应用程序中自定义 ToolStripMenuItems 每个打开子菜单的 ToolStripMenuItem 的文本附近都有一个黑色箭头 我想更改一些颜色 MenuItemSelected MenuItemBorder Menu
  • JavaScript 中仅比较日期部分而不比较时间

    下面的代码有什么问题 也许只比较日期而不是时间会更简单 我也不知道如何做到这一点 我进行了搜索 但找不到我的确切问题 顺便说一句 当我在警报中显示两个日期时 它们显示为完全相同 My code window addEvent domread
  • System.Data.DataException:初始化数据库时发生异常

    请帮我解决这个问题 我已经编写了使用 LINQ 从数据库获取第一条记录的代码 My Homecontroler CustomHandleError public class HomeController Controller Domain
  • 如何动态生成团队之间可能的遭遇?

    我感谢您提前在本练习中提供帮助 其中我还没有发现如何解决它的真相 如何动态生成团队之间可能的遭遇 具有以下输入字段 开始日期 teams fields 玩的天数 例如以下数据 const startDate 03 08 2020 const
  • MySQL - 连接上的特定列?

    在进行连接 内部 左外部 右外部或其他 时 如何指定表中的哪些列要连接到原始表中 考虑以下示例 SELECT FirstName FROM User LEFT OUTER JOIN Provider ON User ProviderID P
  • 谁能量化 C++ 和 Java 之间的性能差异?

    在 JIT 出现之前 Java 最初速度很慢 但现在的性能非常接近 C 我想知道是否有人对这两种语言进行了可衡量的性能比较 与C 相比 Java的不足在哪里 Java 为开发人员提供了许多生产力提升 因此他们可以更快地编写应用程序 因为没有
  • Mockito:使用类型兼容的参数验证重载方法

    考虑你想要mock一个接口使用Mockito包含以下方法签名 public void doThis Object o public void doThis Object o 我需要verify that doThis Object o 而不
  • 当仪表板按钮被禁用时,我们可以显示不同的工具提示吗?

    我专门使用 Tridion 2011 的 PowerTools 扩展 但这适用于仪表板中带有按钮的任何 Anguilla 扩展 我们可以设置
  • getElementById() 高效吗? [复制]

    这个问题在这里已经有答案了 我经常用这个方法getElementById id1 在我的方法中 我用它来查找 HTML 中的某些元素 我想知道如果每次都必须搜索整个 DOM 我是否需要关心我使用它的程度 这个方法如何运作 它是否解析 DOM
  • 创建具有大量标志的位标志变量或如何创建大位宽数字

    假设我有一个枚举 其位标志选项大于标准数据类型中的位数 enum flag t FLAG 1 0x1 FLAG 2 0x2 FLAG 130 0x400000000000000000000000000000000 由于多种原因 这是不可能的
  • 如何检查字符串是否与 Python 中的设定模式匹配?

    我想将字符串与特定模式或单词集匹配 如下所示 the apple is red是查询并且the apple orange grape is red orange violet是要匹配的模式 这些管道代表可以相互替换的单词 该模式也可以分组为
  • 如何检索单元格评论的文本

    我找到了很多用于创建的示例 但没有找到用于检索单元格注释文本的示例 我错过了一些明显的事情吗 Range Comment Text似乎在这里工作没有任何问题 e g if not ActiveCell Comment is nothing
  • RestKit 不会从本地存储中删除孤立对象

    您好 我已将 RestKit 从 0 10 2 更新到 0 20 3 现在更新后 当 Web 服务中缺少对象时 RestKit 不会从本地存储中删除它们 我知道 RestKit 0 20 x 支持它 但我无法配置它 我按照这里给出的例子进行
  • 如何通过其值而不是位置设置微调器默认值?

    我的数据库中有 1 50 条记录 我使用游标获取这些数据 并使用简单游标适配器将这些值设置为 Spinner 现在我需要的是我想设置一个值 例如第 39 个值 作为默认值 但我不想通过它的位置来设置它的值 我知道如何通过其位置设置微调器默认
  • 在Centos 6.6 64位中安装pymssql

    我尝试在 Centos 6 6 中 pip install pymssql 但不断遇到此错误 mssql c 314 22 错误 sqlfront h 没有这样的文件或目录 cpp helpers h 34 19 错误 sybdb h 没有
  • 检测节点在场景中何时可见

    我正在尝试找到一种方法来检测 或接收通知 节点已添加到场景中并且可见 我正在主 JavaFx 线程中创建 Node 对象 并将它们添加到舞台和场景中 使用Platform runLater 但是 我希望 Node 对象接收已添加到场景中并且
  • Typescript:将 JSON 对象转换为类/接口对象

    我正在尝试将 API 响应转换为打字稿类 接口 这里 API 返回具有某些属性的对象列表 但我只需要响应对象的少数属性 API响应示例 Id 1 Name test Description Test PropertyX x Property