deno import JSON file as module

As per the following thread support for reading json files was removed just before shipping deno 1.0

https://github.com/denoland/deno/issues/5633

However, you can use the following syntax for reading a json file

Deno.readTextFile('./file.json').then(data => {
    console.log(JSON.parse(data))
})

or

const data = JSON.parse(Deno.readTextFileSync('./file.json'));

Also, be sure to run the file containing above code with --allow-read flag. Otherwise you will ge a permission denied error

deno run --allow-read index.ts

Since Deno 1.17 JSON can now once again be imported in ESM. Import assertions must now be used:

import data from "./file.json" assert { type: "json" };
console.log(data);

For more info, see https://examples.deno.land/importing-json.


As an alternative to Afeef's answer, since a JSON file is a valid object literal, you can add export default to it and change the extension to .js.

from settings.json

{
   "something": {
      "foo": "bar"
   } 
}

to settings.js

export default {
   "something": {
      "foo": "bar"
   } 
}

And now you can can use import

import settings from './settings.js'
console.log(typeof settings) // object
constole.log(settings.something.foo) // bar

The upside, aside from being shorter, is that you don't need --allow-read access

Tags:

Json

Module

Deno