使用 Bash Shell 处理 JSON 文件

2015-06-19 15:41:11 +08:00
 wsgzao

前言

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。本文提供一个真实的测试用例需求,设计逻辑类似Makefile,我以Bash处理JSON为例,Coding水平有限,请各位多多包涵哈,欢迎大家一起学习和挑战各种不同的语言来实现。

巧用jq处理JSON数据


更新历史

2015年06月19日 - 初稿

阅读原文 - http://wsgzao.github.io/post/bash-json/

扩展阅读

11060 次点击
所在节点    程序员
22 条回复
Hawk
2015-06-19 16:27:17 +08:00
楼主 blog theme能fork吗
Hawk
2015-06-19 16:36:53 +08:00
没点过去看 不好意思
wsgzao
2015-06-19 16:38:34 +08:00
@Hawk 没事
cxl008
2015-06-19 16:40:40 +08:00
还以为是纯bash,多用了个 jq 是神马?
ChiangDi
2015-06-19 16:49:49 +08:00
我也以为是 bash ,原来是 bash 调用 jq...
wsgzao
2015-06-19 17:03:42 +08:00
@cxl008 我一开始想使用Python 3编写,但刚开始学习@廖雪峰的Python 3教程,快速学习的功力还不够深,Bash本身也可以处理但使用`sed, awk, grep`等命令或显得很复杂,通过Stack OverFlow找到jq的方法不错就复用了
celon
2015-06-19 17:32:25 +08:00
bash下的 jq 很好用,用这个写了一套操作bitcoin的脚本
Hawk
2015-06-19 17:38:30 +08:00
@wsgzao https://pypi.python.org/pypi/jq/0.1.3
已经有了python实现的jq
wsgzao
2015-06-19 20:05:19 +08:00
@Hawk 非常感谢哈
zodiac1111
2015-06-19 21:50:03 +08:00
bash的来了... [Pure-shell JSON parser](https://github.com/rcrowley/json.sh)
小.只是parser.有在ash上用的.安利一下.
lululau
2015-06-19 22:06:00 +08:00
jq 怎么成 bash 下的了,明明是 zsh 下的啊
shizukoto
2015-06-19 22:41:40 +08:00
此外还可以用 https://www.npmjs.com/package/json ,常用的取属性操作等非常方便。而且基于 nodejs ,单文件、无依赖项。

echo '{"fred":{"age":42}}' | json fred.age
cattail
2015-06-19 22:55:30 +08:00
> 易于人阅读和编写

笑过
lilydjwg
2015-06-19 23:00:34 +08:00
jq 很强大,不过要新学一种 mini-language。如果需求非常简单的话,可以考虑 jshon 命令,功能很有限,但是用法也非常简单。
ekousp
2015-06-19 23:41:36 +08:00
文中的 json 只是个测试用例,作者写的程序不符合需求。
Arthur2e5
2015-06-20 00:05:24 +08:00
表示有个 bash 库叫做 https://github.com/ingydotnet/json-bash
Arthur2e5
2015-06-20 00:10:38 +08:00
唔不过 jq 很厉害的样子…毕竟是门小语言了。

另外楼上那个纯 POSIX 的 json parser 也挺有意思…
Mutoo
2015-06-20 00:41:22 +08:00
支持 json5 么。。http://json5.org/
ys0290
2015-06-20 00:50:34 +08:00
用bash处理dnspod的json返回结果,把我弄吐血了,所以干脆用大牛的方案改了改😂
Septembers
2015-06-20 07:44:56 +08:00
@lilydjwg 我在Bash里用Python处理JSON

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/199830

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX