Как десериализовать объект JSON в TypeScript интерфейса

#javascript #json #typescript #fetch

#javascript #json #typescript #выборка

Вопрос:

 const response = await fetch('https://api.codetabs.com/v1/proxy/?quest=http://hamsterland.herokuapp.com/api/users?id=330746772378877954');
const json = await response.json(); 
const user: User = JSON.parse(json);
 
 interface User {
    id: string;
    username: string;
    avatar: string;
}
 

В последней строке JSON.parse(json) я получаю сообщение об ошибке, в котором говорится:

 Unhandled Rejection (SyntaxError): Unexpected token o in JSON at position 1
 

Я не уверен, что является причиной этого. Модель интерфейса соответствует структуре JSON.

Комментарии:

1. Он уже проанализирован. Это то, что .json() делает.

2. paste.mod.gg/akepubiwix.json @Ноник

3. Ошибка, которую вы видите, связана с тем, что вы пытаетесь проанализировать уже проанализированную строку json. Поэтому, когда вы запускаете JSON.parse(object) его, он должен попытаться выяснить, что делать, чтобы создать объект, который превращается в JSON.parse('[object Object]')

Ответ №1:

Похоже JSON.parse(json) , в этом не было необходимости. Все, что мне нужно было сделать, это

 const response = await fetch('https://api.codetabs.com/v1/proxy/?quest=http://hamsterland.herokuapp.com/api/users?id=330746772378877954');
const user: User = await response.json(); 
 

Спасибо @Taplar за решение.