Some months ago I decided to learn more about the GNOME ecosystem. Overall, I'm amazed how accessible the GNOME Shell and the GNOME ecosystem is for web developers - at least in in theory.
GNOME users and enthusiasts may already know that lot of the gnome-shell is written in JavaScript. Moreover, the GNOME desktop provides JavaScript bindings, allowing GNOME developers to write their Gtk-based applications in JavaScript as well. In the GNOME ecosystem the component that runs JavaScript-based applications is called Gjs. By the way, a really nice Gjs/Gtk tutorial can be found here.
Anyways, I just came across the problem of reading and writing JSON files on a GNOME desktop. Fortunately, this task is pretty straightforward as the following listings demonstrate.
Reading JSON files:
#!/usr/bin/env gjs
// Import GLib to read and write files
const GLib = imports.gi.GLib;
// get the contents of the json file data.json
let [ok, contents] = GLib.file_get_contents('data.json');
if (ok) {
let map = JSON.parse(contents);
log(map);
}
Writing JSON files:
#!/usr/bin/env gjs
// Import GLib to read and write files
const GLib = imports.gi.GLib;
let map = {
temperature: 20.1,
humidity: 39.1
};
// create a json string and write the contents to the file data.json
let data = JSON.stringify(map, null, '\t');
GLib.file_set_contents('data.json', data);
Overall, it seems that we can just use Glib and the global JSON object to read and write JSON files:
GLib.file_get_contents
- GLib function for reading file contentsGLib.file_set_contents
- Glib function for writing file contentsJSON.parse
- Global JavaScript function to parse json stringsJSON.stringify
- Global JavaScript function to create a JSON string from a object