无法理解 Angular 如何将 json 映射到对象
unable to understand how Angular maps a json to an object
我正在向 Angular
客户发送以下 json
{
result:"success"
additional-info:"something"
}
我正在将上面的 json
映射到下面的对象 class
export class ServerResponseAPI{ //should this be an interface?
constructor ( public result:string,
public additionalInformation:string){
}
}
例如。 let jsonResponse:ServerResponseAPI = res.body
当我尝试访问 jsonResponse.additionalInformation
键时,我得到的错误是 undefined
。我想这是因为 javascript 将 json
转换为带有键 result
和 additional-info
的 object
(我们称它为 jsonObject
并且当这个对象被分配给 ServerResponseAPI
类型的对象(我们称之为 apiObject
),additional-info
由于名称不同而没有映射到 additionalInformation
。我更正了代码如下和有效
export class ServerResponseAPI{
'additional-info':string;
constructor ( public result:string,
public additionalInformation:string){
this['additional-info'] = additionalInformation;
}
}
但是我不太明白为什么初始代码不起作用而后一个代码起作用了。如果 Angular
创建具有两个属性的 apiObject
- result
和 additionalInformation
并注意到 jsonObject
没有 additionalInformation
属性 , 它保持 additionalInformation
undefined
。那为什么 this['additional-info']=additionalInformation
不也使 additional-info
undefined
?
据我所知,Angular 和 Typescript 是 Angular 将您的 JSON 解析为对象,然后 Typescript 进行验证。
问题是当您工作时 类 您需要使用 new
关键字创建新实例。
Typescript 中的接口对于编码时的类型验证很有用(它们不会在你的编译代码中添加额外的代码),它们非常适合这种场景,它提供了一种方式 "defining" 将从您的 API.
返回的对象的结构
界面是这样使用的:
let jsonResponse:ServerResponseAPI = res.body
这是 Class 的用法:
let jsonResponse = new ServerResponseAPI(res.body.result, res.body['additional-info'])
使用接口可以直接从对象映射类型。
希望对您有所帮助
我正在向 Angular
客户发送以下 json
{
result:"success"
additional-info:"something"
}
我正在将上面的 json
映射到下面的对象 class
export class ServerResponseAPI{ //should this be an interface?
constructor ( public result:string,
public additionalInformation:string){
}
}
例如。 let jsonResponse:ServerResponseAPI = res.body
当我尝试访问 jsonResponse.additionalInformation
键时,我得到的错误是 undefined
。我想这是因为 javascript 将 json
转换为带有键 result
和 additional-info
的 object
(我们称它为 jsonObject
并且当这个对象被分配给 ServerResponseAPI
类型的对象(我们称之为 apiObject
),additional-info
由于名称不同而没有映射到 additionalInformation
。我更正了代码如下和有效
export class ServerResponseAPI{
'additional-info':string;
constructor ( public result:string,
public additionalInformation:string){
this['additional-info'] = additionalInformation;
}
}
但是我不太明白为什么初始代码不起作用而后一个代码起作用了。如果 Angular
创建具有两个属性的 apiObject
- result
和 additionalInformation
并注意到 jsonObject
没有 additionalInformation
属性 , 它保持 additionalInformation
undefined
。那为什么 this['additional-info']=additionalInformation
不也使 additional-info
undefined
?
据我所知,Angular 和 Typescript 是 Angular 将您的 JSON 解析为对象,然后 Typescript 进行验证。
问题是当您工作时 类 您需要使用 new
关键字创建新实例。
Typescript 中的接口对于编码时的类型验证很有用(它们不会在你的编译代码中添加额外的代码),它们非常适合这种场景,它提供了一种方式 "defining" 将从您的 API.
返回的对象的结构界面是这样使用的:
let jsonResponse:ServerResponseAPI = res.body
这是 Class 的用法:
let jsonResponse = new ServerResponseAPI(res.body.result, res.body['additional-info'])
使用接口可以直接从对象映射类型。
希望对您有所帮助