JSON files are widely used by developers to save configurations and share data across servers and applications. They’re built to be easy for both machines and people to understand. But if you only have a Linux terminal to work with, it’s not that easy. Let me give you a few tips to improve that.
As a whole, JSON files are basically text files formatted in a specific way. Any text editor can create and edit them without any add-on required. But tools like “jq” can be used to make them more readable.
I know that there is no perfect solution to edit JSON files like in a desktop environment, but stay with me as I have some good tips to share with you.
Creating a JSON File in Linux Terminal
Basically, JSON files are simply text files formatted in a very specific way. While the formatting is strict, the content itself is just text, so you can use any text editor you like for this task.
As JSON files are purely text files ending with a “.json” extension, you can simply create an empty JSON file with the Linux terminal by using the “touch” command:
The “touch” command on Linux is widely used to create empty text files. But if your goal is to write the JSON file content, then it’s better to use a full editor. The two most popular are:
- Nano: It’s now the default text editor installed on most distributions, so you probably already have it. You can create or open an existing JSON file with:
nano myfile.jsonYou can start writing immediately, but you may need a bit of time to understand the shortcuts available if it’s your first time (I have a guide here for you if needed).
- Vim: Another popular alternative to Nano. If you’re used to it, you may want to try it first.
Here is the command to do the same thing:
The interface is slightly different, but you can do similar things:
I have a beginner’s guide about Vim here (it’s for the Raspberry Pi, but it might help on any Linux computer).
So, nothing terribly challenging for now, you can create JSON files with the “touch” or any text editor that runs in a terminal. But let’s see how to edit existing JSON files without messing up the formatting.
Editing a JSON File in the Linux Terminal
JSON files are generally fairly easy for humans to read, but writing them can be challenging. There is a full set of rules to keep in mind when you edit JSON files:
- Data is in name-value pairs: You can’t have a value alone, ex: “name”: “Patrick”.
- Each data type is formatted differently:
- Strings between double quotes.
- Numbers without them.
- Object wrapped in curly braces.
- Arrays in square brackets.
- You can also have booleans (true/false) or ‘null’ as a value.
- No trailing commas: the name pair in an object or array can’t have a comma after it.
And sadly, it was a bit of a shock for me while doing the research for this article, there is no great editor for JSON files when you don’t have a GUI.
That’s it, there is no good editor specifically built to edit JSON files in a Linux terminal, so we have to use the classic text editors you already know.
Basically, as JSON files are simply text files, you can use your favorite text editor for this (Nano, Vim, Emacs, etc.). Unlike YML files, JSON files are not strict about white spaces (space, tabs, newlines, etc.), so it should be fine.
It’s not perfect, but for simple edits it should be fine. For larger modifications, check the end of the article, I still have a few tips for you.
Formatting JSON Files in the Terminal
The main issue when working with JSON files in a Linux terminal is that it can be hard to read.
As I mentioned earlier, white spaces are not standardized, so computers (and some humans) tend to generate or write JSON files all in one line.
They will often look like this:
While it might be fine for short files like this example, it’s not the most readable.
When you open the file, I guess you would prefer to have something like this:
Interested? Well, stay with me, you just need to install one package that will do this for you quickly.
Solution: Installing jq
“jq” is a command-line processor for Linux. It’s not a text editor, but it can transform a JSON file in different ways. I’ll show you how to use it to prettify your JSON files, but it can also do various tasks on JSON files (filtering, summarizing, inserting values, etc.).
For now, start by installing it on your system. If you’re using a Debian-based distribution, you can get it with:
sudo apt install jq
It’s a tiny package, so it should be installed pretty quickly.
If you’re new to the Linux command line, this article will give you the most important Linux commands to know, plus a free downloadable cheat sheet to keep handy.
Prettifying JSON files
Now that jq is installed, you can start using it right away.
The main command you can use to display a JSON file properly follows this syntax :
jq . ugly.json
When you run it, it will display the file in your terminal directly (it doesn’t modify it), but it adds spaces, tabs and new lines to make it easier for us to read (unlike “cat” or other commands).
From there, if you want to save the changes to get a file directly formatted like that, you can redirect the output to another file:
jq . ugly.json > pretty.json
Once done, you can use Nano or Vim to edit the new file, which should be easier than the original one now that it’s formatted properly.
Need a real editor for JSON files?
We have seen that there is no magical editor for JSON files in the Linux terminal, but it doesn’t mean you have to do everything manually.
I guess that if you’re reading this article about editing JSON files via the Linux terminal, it’s because you work on a Linux server that doesn’t have a GUI. But often, these servers have some kind of remote access enabled (typically SSH).
If you can access the Linux server via SSH, it means you can copy the JSON file’s content and use a full editor on your computer. Or even better, you can use a free online tool.
While doing some research for this article, I stumbled upon this tool: JSON Editor Online. It looks like this, and it was really what I was looking for, with features dedicated to the JSON format (adding objects, array, values, etc.).
But obviously, if you can copy the JSON file to your computer, you can also use traditional text editors like VS Code, Sublime Text, or Geany. You can find a list of my favorite code editors here. All of them have features or plugins you can use to edit JSON files.
Want to chat with other Raspberry Pi enthusiasts? Join the community, share your current projects and ask for help directly in the forums.
Overwhelmed with Linux commands?
My e-book, “Master Linux Commands”, is your essential guide to mastering the terminal. Get practical tips, real-world examples, and a bonus cheat sheet to keep by your side.
Grab your copy now.
If you just want to hang out with me and other Linux fans, you can also join the community. I share exclusive tutorials and behind-the-scenes content there. Premium members can also visit the website without ads.
More details here.
Need help building something with Python?
Python is a great language to get started with programming on any Linux computer.
Learn the essentials, step-by-step, without losing time understanding useless concepts.
Get the e-book now.