jo:通过shell命令创建JSON

我尝试损坏shell脚本来创建JSON。你可能已经在某些地方看过这个了:

echo '{"name":"Jane"}'

如果一个元素包含一个环境变量:open double, close single, add variable, open single, blergh。

脚本会以下面的方式打印,但是它的可读性并没有提高很多:

printf '{"name": "%s"}/n' "Jane"

jo:通过shell命令创建JSON

进入 jo:

$ jo name=Jane  {"name":"Jane"}

某天晚上我突然有了想法,我不知道为什么花了我这么长时间:

$ jo time=$(date +%s) dir=$HOME {"time":1457195712,"dir":"/Users/jpm"}

BAM!Jo尝试引入类型、null、布尔类型、字符串和数字。它还有数组,打印如下:

$ jo -p -a spring summer winter  [ "spring",   "summer",   "winter" ]

通过HN评论启发,我添加了另一个hack:如果一个键值开始于左大括号({) 或者一个中括号([]),我们试图解码JSON;它允许jo添加对象或者数组.

$ jo -p name=JP object=$(jo fruit=Orange [email protected] point=$(jo x=10 y=20) number=17) sunday=false { "name": "JP",   "object": { "fruit": "Orange",    "hungry": false,    "point": { "x": 10,     "y": 20    },    "number": 17   },   "sunday": false }

为什么这么做呢?我需要很多JSON来测试OwnTracks,脚本看起来会更方便的多。

$ jo _type=location / cog=$((RANDOM % 360)) / t=u / lat=48.85833 / lon=2.29513 / acc=5 / tid=JJ / tst=$(date +%s) | mosquitto_pub -t owntracks/jjolie/test -l

Jo有一个使用手册,快去看看吧!

更新:

Caius Durling提供了 jo 的 Homebrew tap

Jo在创建时就有logo了,color被Frederic Cambus授权;

Shawn Webb将 jo 添加到了 HardenedBSD 的文章

我已经把jo转换成自动工具,这个版本将要发布

Alessio Sergi已经把 jo 加入到 voidlinux,安装 xbps-install -Su jo;

我已经建立了一个 Win32,发布链接

Lance Chen建立了 jo 的 ArchLinux 端口

原文链接:jpmens.net FB小编/FireFrank编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)