Nit*_*tin 7 json class typescript angular
我正在尝试将 API 响应转换为打字稿类/接口。
这里 API 返回一个包含一些属性的对象列表,但我只需要响应对象的几个属性。
API 响应示例:
[{
'身份证':1,
'名称': '测试',
'描述:'测试',
'属性X':'x',
'属性Y':'y'
},
...]
打字稿类
类响应{
id:字符串;
名称:字符串;
}
您能否建议我将 JSON 对象转换为打字稿对象的最佳方法。
我建议创建一个接口来描述您在应用程序中使用的属性并忽略其余的:
因此,假设您的响应如下所示:
const response = [{
'Id' : 1,
'Name': 'test',
'Description: 'Test',
'PropertyX': 'x',
'PropertyY' : 'y'
}, {
'Id' : 2,
'Name': 'test2',
'Description: 'Test2',
'PropertyX': 'x2',
'PropertyY' : 'y2'
}
];
Run Code Online (Sandbox Code Playgroud)
并且您只对Idand感兴趣Name,只需创建一个像这样的界面:
interface IMyObject {
Id: String;
Name: String;
}
Run Code Online (Sandbox Code Playgroud)
然后在应用程序的其余部分中,您可以将响应转换为 IMyObject[]
例如,如果函数使用您的响应:
function myFunction(response: IMyObject[]) { ... }
Run Code Online (Sandbox Code Playgroud)
或者如果您需要返回该类型,您可以像这样进行直接转换:
return response as MyObject[];
Run Code Online (Sandbox Code Playgroud)
编辑:正如下面的评论中提到的,简单地将您的对象强制转换为IMyObject不会删除您不感兴趣的额外属性。
为此,请使用.map:
const formattedResponse: IMyObject = reponse.map(item => {
Id: item.Id,
Name: item.Name
});
Run Code Online (Sandbox Code Playgroud)