json - 'Response' 类型的参数不能分配给 'string' 类型的参数

标签 json angular httpclient google-apis-explorer

我有我正在做的这个项目。
这个想法是使用 angular 4 从谷歌图书 API 中检索图书

我正在努力理解如何阅读 JSON 响应,我仍在学习 Angular。
我在互联网上搜索并在 GitHub 上找到了这个源代码
google bookstore

我收到以下错误

Argument of type 'Response' is not assignable to parameter of type 'string'.

对于这条线
  let bookResponse = JSON.parse(body);

我不确定我是否以正确的方式做这件事。
感谢你的帮助

下面是我发送 HTTP 请求的方法。
  getBooks(searchparam: any){
let par = new HttpParams();
par.set('q', searchparam);

return this.httpClient.get('https://www.googleapis.com/books/v1/volumes', {
  params : new HttpParams().set('q',searchparam)
}).map(
  (response: Response) => {
    let data = response;

    return data;
  }
);

}

下面是从HTTP请求中获取数据并读取JSON响应的方法
  getBook() {

const dataArrya = this.searchForm.get('param').value;

console.log(dataArrya);
this.requestService.getBooks(dataArrya)
  .subscribe(
    response  => {
      this.printData(response)
    //  console.log(this.bookData);
    },
    (error) => console.log(error)
  ); 

}
 private printData(res: Response) {

let body = res;
let books: Array<Book> = new Array<Book>();
let bookResponse = JSON.parse(body);
console.log(bookResponse);
console.dir(bookResponse);
for (let book of bookResponse.items) {
  books.push({
    title:book.volumeInfo.title,
    subTitle: book.volumeInfo.subTitle,
    categories: book.volumeInfo.categories,
    authors: book.volumeInfo.authors,
    rating: book.volumeInfo.rating,
    pageCount: book.volumeInfo.pageCount,
    image: book.volumeInfo.imageLinks === undefined ? '' : book.volumeInfo.imageLinks.thumbnail,
    description: book.volumeInfo.description,
    isbn: book.volumeInfo.industryIdentifiers,
    previewLink: book.volumeInfo.previewLink
  });
}

}

最佳答案

JSON.parse接受一个字符串,但您传递给它的是一个 Angular Response , 这是一个对象(不是字符串)。为了转换 Angular Response对于字符串,您可以调用 toString在它上面,像这样:

let bookResponse = JSON.parse(body.toString());

关于json - 'Response' 类型的参数不能分配给 'string' 类型的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46997326/

相关文章:

c# - 带有 JSON 对象的 HTTP POST 返回 c#

java - JSON 字符串中的意外转义

javascript - Auth0 服务无法使用 Angular 2 找到容器

angular - 使用 patchValue 未在文本区域中呈现值

jquery元素无法从显示的json调用

ios - 地幔是否需要完全指定模型?

css 中的 Angular 内联资源作为 data-uri

java - Android 查询 - 随机 SSLExceptions

android - HttpClient 未在 Android Studio 中导入

java - 通过 https ://获取 XML 数据