json - NativeScript getJSON 格式错误的响应
问题描述
尝试从 OMDb API 获取数据,在 Postman 中结果返回正常,而 getJSON 函数返回非结构化数据
我已经尝试过使用类型化接口
export interface ApiResponse {
Search: Movies[];
totalResults: string;
Response: string;
}
export interface Movies {
title: string;
year: number;
poster: string;
imdbId: string;
type: string;
}
这是 getJSON 代码
return getJSON<any>(
this.apiUrl + this.apiKey + "&s=Harry-potter&page10"
).then(r => {
console.log(r);
});
然后返回json格式错误
LOG from device : {
LOG from device : "imdbID": "tt1201607",
LOG from device : "Type": "movie",
LOG from device : "Poster": "https://m.media-amazon.com/images/M/MV5BMjIyZGU4YzUtNDkzYi00ZDRhLTljYzctYTMxMDQ4M2E0Y2YxXkEyXkFqcGdeQXVyNTIzOTk5ODM@._V1_SX300.jpg"
LOG from device : },
LOG from device : {
LOG from device : "Year": "2011",
LOG from device : "Search": [
LOG from device : "Title": "Harry Potter and the Deathly Hallows: Part 2",
LOG from device : {
LOG from device : "Title": "Harry Potter and the Sorcerer's Stone",
LOG from device : "Year": "2001",
LOG from device : "imdbID": "tt0241527",
LOG from device : "Type": "movie",
LOG from device : },
LOG from device : {
LOG from device : "Title": "Harry Potter and the Chamber of Secrets",
LOG from device : "Poster": "https://m.media-amazon.com/images/M/MV5BNjQ3NWNlNmQtMTE5ZS00MDdmLTlkZjUtZTBlM2UxMGFiMTU3XkEyXkFqcGdeQXVyNjUwNzk3NDc@._V1_SX300.jpg"
期待邮递员这样的回报:
{
"Search": [
{
"Title": "Harry Potter and the Deathly Hallows: Part 2",
"Year": "2011",
"imdbID": "tt1201607",
"Type": "movie",
"Poster": "https://m.media-amazon.com/images/M/MV5BMjIyZGU4YzUtNDkzYi00ZDRhLTljYzctYTMxMDQ4M2E0Y2YxXkEyXkFqcGdeQXVyNTIzOTk5ODM@._V1_SX300.jpg"
},
{
"Title": "Harry Potter and the Sorcerer's Stone",
"Year": "2001",
"imdbID": "tt0241527",
"Type": "movie",
"Poster": "https://m.media-amazon.com/images/M/MV5BNjQ3NWNlNmQtMTE5ZS00MDdmLTlkZjUtZTBlM2UxMGFiMTU3XkEyXkFqcGdeQXVyNjUwNzk3NDc@._V1_SX300.jpg"
},
{
"Title": "Harry Potter and the Chamber of Secrets",
"Year": "2002",
"imdbID": "tt0295297",
"Type": "movie",
"Poster": "https://m.media-amazon.com/images/M/MV5BMTcxODgwMDkxNV5BMl5BanBnXkFtZTYwMDk2MDg3._V1_SX300.jpg"
}
],
"totalResults": "80",
"Response": "True"
}
解决方案
在 之前console log
,使用另一个then
(我很确定你应该用一个承诺来做)和resolve
返回的结果如下或reject
在错误的情况下。您还可以console log
在 catch 块中添加一个,以查看error
:
return new Promise((resolve, reject) => {
fetch(
this.apiUrl + this.apiKey + "&s=Harry-potter&page10"
)
.then(res => res.json())
.then(r => {
console.log(r);
resolve(r)
})
.catch(err => reject(err))
})
该fetch
方法已经返回 a ,因此您Promise
不必在. 在我看来,使用and更好。这应该可以解决问题。另请参阅此处的 Native Script 中获取的文档:Fetchreturn a new Promise
.then()
fetch
resolve
reject
推荐阅读
- typescript - 为什么 Typescript 假定此 switch 语句中的每个分支都是“从不”?
- django - 如何在 ModelAdmin 类中添加 js 媒体文件
- neo4j - Neo4j 密码选择查询在树状结构图中
- r - 根据 R 中 for 循环体的结果改变 for 循环中的迭代次数
- python - 使用 PYTHON 将 3 维 DataFrame 转换为 3 维数组的问题
- android - 带有 Kotlin 的 Android - 将数据传回之前的 Activity
- java - Spring Security:如何设置自定义 PortMapper?
- azure - 为什么重新启动函数应用的 Azure 应用服务不同步 azure 函数?
- python - 从 matplotlib 中的自动缩放中排除高于/低于阈值的值
- python - 如何在 Python 中撤消 os.unlink()?