Create JSON output from the Linux command line

This past weekend while working on create-seccomp-profile I needed a way to generate JSON output from arbitrary text. After a little googling I came across the incredibly useful jo utility. Where jq is invaluable for pulling arbitrary data out of a JSON data structure jo is amazing at creating JSON structures. In it’s simplest form jo can take key value pairs and produce pretty printed JSON output:

$ jo -p name=shibby array=$(jo -a foo=1 bar=2)

   "name": "shibby",
   "array": [

Jo also has a number of other capabilities to create arrays and complex object hierarchies:

$ jo -p defaultAction=SCMP_ACT_ERRNO architectures=$(jo -a SCMP_ARCH_X86_64 SCMP_ARCH_X86 SCMP_ARCH_X32) sycalls=$(jo -a $(jo name=read action=accept) $(jo name=write action=accept args=[]))

   "defaultAction": "SCMP_ACT_ERRNO",
   "architectures": [
   "sycalls": [
         "name": "read",
         "action": "accept"
         "name": "write",
         "action": "accept",
         "args": []

In teh example above I created a simple docker seccomp profile. This is a super useful utility and I hope it gets rolled out to all of the major distributions. It’s in Ubuntu 17.10 so life is grand. :)

This article was posted by Matty on 2017-11-26 14:46:17 -0500 EST