#javascript #json #angular #typescript #reader
Вопрос:
Как я могу прочитать локально сохраненный файл JSON в переменную в typescript? У меня есть файл фотографий в формате json, который выглядит следующим образом:
[
{
"id": 1,
"camera": "",
"location": "",
"iso": 0,
"aperture": 0,
"focal length": 0
},
{
"id": 2,
"camera": "",
"location": "",
"iso": 0,
"aperture": 0,
"focal length": 0
},
{
"id": 3,
"camera": "",
"location": "",
"iso": 0,
"aperture": 0,
"focal length": 0
}
]
Я пытаюсь прочитать файл в виде текста, а затем использовать Json.Parse
, но как я могу прочитать его в виде текста в первую очередь? Я пробовал использовать FileReader.readAsText, но он принимает только объекты blob-объектов. Нужно ли мне создавать объект blob-объекта из моего пути к файлу или есть более простой способ чтения локальных файлов JSON?
Комментарии:
1. что вы подразумеваете под локальным хранением ? это на вашем компьютере или в кодовой базе ?
2. Это должен сделать простой импорт
3. Он хранится в кодовой базе
4. @Liad Я попытался импортировать фотографии из «./assets/photos.json», но в нем говорится, что он не может найти модуль
5. В кодовой базе и в комплекте с кодом, верно?
Ответ №1:
Вы можете это сделать, но вам нужно изменить tsconfig.json
. Внутри tsconfig.json
есть настройка под названием resolveJsonModule
. По умолчанию его значение равно false
.
TL;DR
- Откройте
tsconfig.json
и, еслиresolveJsonModule
его нет в спискеcompilerOptions
, добавьте его, как показано ниже :
"resolveJsonModule": true,
- Откройте компонент, в котором вы хотите прочитать файл, и импортируйте его, как :
import * as photos from '../../path-to file';
вышеуказанных изменений достаточно для импорта файла.
Вот пример : Пример Стекблитца
Ответ №2:
Если вы не ожидаете, что файл изменится, вы можете использовать require('path')
его для его получения. Он должен просто вернуть объект; нет необходимости в JSON.parse.
Ответ №3:
Вы можете импортировать файл json
import all from '../../path/to/file.json'
затем объявите, как показано ниже, для ввода
const samples = (all as DataType)
Ответ №4:
Вам нужно добавить это в свой tsconfig
compilerOptions: { ...
"resolveJsonModule": true,
}
А затем импортируйте его, как любой модуль
import myfile from './path/to/json/file.json';