【发布时间】:2018-04-30 04:45:19
【问题描述】:
所以我从我的asp.net core api 获得以下 JSON 结构:
{
"contentType": null,
"serializerSettings": null,
"statusCode": null,
"value": {
"productName": "Test",
"shortDescription": "Test 123",
"imageUri": "https://bla.com/bla",
"productCode": null,
"continuationToken": null
}
}
我有以下 typescript 函数调用 API 来获得上述响应:
public externalProduct: ProductVM;
getProductExternal(code: string): Observable<ProductVM> {
return this.http.get("api/product?productCode=" + code)
.map((data: ProductVM) => {
this.externalProduct = data; //not working...
console.log("DATA: " + data);
console.log("DATA: " + data['value']);
return data;
});
}
产品虚拟机:
export interface ProductVM {
productName: string;
shortDescription: string;
imageUri: string;
productCode: string;
continuationToken: string;
}
我的问题是我无法将其反序列化为ProductVM。控制台日志只产生[object Object]
如何将我的 json 响应中的 value 的内容实际映射到 ProductVM 对象?
在map函数中说data是ProductVM有错吗?我尝试了很多不同的组合,但我无法让它发挥作用!
我不确定我是否可以以某种方式自动告诉angular 将json 响应中的值数组映射到ProductVM 对象,或者我是否应该为ProductVM 类提供构造函数(它是一个接口现在),并手动提取json中的特定值?
【问题讨论】:
-
您的 API 返回的类型是什么?您是否还返回类似的 ProductVM?看起来您的 API 返回有某种包装器。您想要的实际数据位于 value 属性上。另外,为什么要映射结果? http get 返回一个 Observable.. 所以你可以订阅它。
标签: json angular rest typescript