Protip: If you're using VSCode, the "Live Server" extension makes this trivial. Just right-click your HTML file and hit "Open with Live Server." Then fetch() will work with relative paths.
Otherwise, yeah, FileReader is the way. Here's a async version:
```js
async function loadJSON(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(JSON.parse(reader.result));
reader.onerror = reject;
reader.readAsText(file);
});
}
```
Otherwise, yeah, FileReader is the way. Here's a async version:
```js
async function loadJSON(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(JSON.parse(reader.result));
reader.onerror = reject;
reader.readAsText(file);
});
}
```
