如何解决HttpClient 帖子未返回预期类型
我的后端正在以地图格式发送数据:
{
"key1": ["value1","value2"],"key2": ["value3"]
}
我使用 HttpClient.post 来获取数据。数据返回正常,但是当我尝试执行 data.get 时出现错误
this.http.post<Map<string,string[]>>(url,body).toPromise()
.then((data: Map<string,string[]>) => {
console.log(data);
console.log(data instanceof Map); // false
data.get('key1') // TypeError data.get is not a function
});
解决方法
从网络请求返回的数据将是一个普通对象,而不是一个 Map
。
不过,您可以将其转换为 Map
。 Map
采用键值对数组,因此您可以使用 Object.entries
:
this.http.post<Record<string,string[]>>(url,body).toPromise()
.then((data) => {
const dataMap = new Map(Object.entries(data))
dataMap.get('key1')
});
,
我建议不要使用 Promise。使用 observable,因为它更好地调试并且具有更多特征。
http 构建了一个原始 JSON 对象,您只能将其映射到具有字段的对象。不是方法。 Map 不像对象那样是模型。它是一个“功能对象”。构造函数也不会被触发
这意味着,即使你说它应该是一个地图,但实际上它是一个没有方法的 JSON 对象。
因此,您应该通过管道将数据映射到 Map。
CloseModalViewControllers
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。