Функция, возвращающая объект JSON из файла .json

#javascript #json

Вопрос:

Я пытаюсь создать функцию, которая берет данные из локального .json файла. Моя products.json -да . Это функция, которую я пытаюсь определить:

 async function getJSON_Format(){

    let response = await fetch(api);
    let data = await response.json();
    
    // console.log(data);

    return data;    
    
}
 

api это путь к файлу products.json . То, что я пытаюсь сделать, — это получить все данные от продуктов.json и сохраните его в объектной переменной JSON , подобной этой let json_object = getJSON_Format(); , но она возвращает обещание.

Что я мог с этим поделать?

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

1. Пожалуйста, обратите внимание, что когда вы используете «объект JSON», вы имеете в виду «объект JS».

2. Отмеченная функция async всегда возвращает обещание. Возвращаемый тип не json является , он есть Promise<json> .

3. getJSON_Format не вернет «формат JSON». Он вернет объект JS.

4. Просто действительно заметил, что json метод api выборки, который возвращает [обещание] объекта javascript, действительно не помогает новичку понять разницу, не так ли @evolutionxbox ! вздыхать.

5. @jamiec Увековечение распространенного недоразумения тоже не помогает

Ответ №1:

Ваша функция async такова, что вам это нужно await . Так что:

 let obj = await getJSON_Format();
 

Который сам по себе должен быть в async функции.

Другой вариант-рассматривать его как Promise и использовать then

 getJSON_Format().then(obj => {
  // do something with obj here
});
 

Пожалуйста, обратите внимание, что я изменил имена ваших переменных с json_object просто obj на . Понятие «объект JSON» является неправильным. Что-то является либо JSON (текст), либо объектом (Javascript)

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

1. Я попробовал первый вариант и написал console.log(obj) , и ничего не изменилось