谁能推荐一个Unix(选择您的口味)JSON解析器,该解析器可用于检查管道中JSON响应中的值?
npm install -g ramda-cli
谁能推荐一个Unix(选择您的口味)JSON解析器,该解析器可用于检查管道中JSON响应中的值?
npm install -g ramda-cli
Answers:
您可以使用Perl核心内置的模块使用此命令行解析器(如果愿意,可以将其放入bash别名):
perl -MData::Dumper -MJSON::PP=from_json -ne'print Dumper(from_json($_))'
perl -e "use JSON; print to_json( decode_json(<>), { pretty => 1 } )"
我更喜欢python -m json.tool
默认情况下大多数* nix操作系统上默认情况下都可以使用的版本。
$ echo '{"foo":1, "bar":2}' | python -m json.tool
{
"bar": 2,
"foo": 1
}
但是应该注意,这将按字母顺序对所有键进行排序,这在使用某种无序HashMaps语言生成json的情况下是一件好事,或者可能是一件好事...
json.tool
只是漂亮打印json的捷径。如果您需要在shell脚本中提取/处理json数据,我会使用jq
它在执行时确实很棒……
json.tool
每天使用十次。我想我误解了问题中“内省”的含义,感谢您的指出。
json.tool
仅做两件事:validate和pretty-print json。它不会像jq
这样自省json中的值。
如果您正在寻找可移植的C编译工具:
http://stedolan.github.com/jq/
从网站:
jq就像sed一样用于JSON数据-您可以使用sed来像sed,awk,grep一样轻松地对结构化数据进行切片,过滤,映射和转换和friends可以让您处理文本。
jq可以毫不费力地将您拥有的数据格式转换为所需的数据格式,并且这样做的程序通常比您期望的更短,更简单。
教程:http://stedolan.github.com/jq/tutorial/
手册:http://stedolan.github.com/jq/manual/
下载:http://stedolan.github.com/jq/download/
apt install jq
。
jq
。
我创建了一个专门为命令行JSON操作设计的模块:
https://github.com/ddopson/underscore-cli
它可以让您真正轻松地完成功能强大的事情:
cat earthporn.json | underscore select '.data .title'
# [ 'Fjaðrárgljúfur canyon, Iceland [OC] [683x1024]',
# 'New town, Edinburgh, Scotland [4320 x 3240]',
# 'Sunrise in Bryce Canyon, UT [1120x700] [OC]',
# ...
# 'Kariega Game Reserve, South Africa [3584x2688]',
# 'Valle de la Luna, Chile [OS] [1024x683]',
# 'Frosted trees after a snowstorm in Laax, Switzerland [OC] [1072x712]' ]
cat earthporn.json | underscore select '.data .title' | underscore count
# 25
underscore map --data '[1, 2, 3, 4]' 'value+1'
# prints: [ 2, 3, 4, 5 ]
underscore map --data '{"a": [1, 4], "b": [2, 8]}' '_.max(value)'
# [ 4, 8 ]
echo '{"foo":1, "bar":2}' | underscore map -q 'console.log("key = ", key)'
# key = foo
# key = bar
underscore pluck --data "[{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}]" name
# [ 'moe', 'larry', 'curly' ]
underscore keys --data '{name : "larry", age : 50}'
# [ 'name', 'age' ]
underscore reduce --data '[1, 2, 3, 4]' 'total+value'
# 10
它具有可用的最佳“智能空白” JSON格式器之一:
如果您有任何功能要求,请对此帖子发表评论或在github中添加一个问题。我很高兴优先考虑社区成员所需的功能。
wget
每个URL。
underscore
解析具有嵌套对象和数组的嵌套json吗?
还有JSON命令行处理工具包如果您碰巧在堆栈中有node.js和npm,那么。
还有另一个用于在Unix命令行上按摩JSON的“ json”命令。
以下是其他替代方法:
npm install json
。
json
似乎已由另一个完全不同的软件包接管。
有人提到Jshon或JSON.sh吗?
https://github.com/keenerd/jshon
将json传递给它,然后遍历json对象,并打印出当前对象(作为JSON数组)的路径,然后打印出该对象的路径,没有空格。
http://kmkeen.com/jshon/
Jshon从stdin加载json文本,执行操作,然后在stdout上显示最后一个操作,这也成为了常规文本处理管道的一部分。
brew install jshon
,cat *.json | jshon
对于Bash / Python,这是python的基本包装simplejson
:
json_parser() {
local jsonfile="my_json_file.json"
local tc="import simplejson,sys; myjsonstr=sys.stdin.read(); "`
`"myjson=simplejson.loads(myjsonstr);"
# Build python print command based on $@
local printcmd="print myjson"
for (( argn=1; argn<=$#; argn++ )); do
printcmd="$printcmd['${!argn}']"
done
local result=$(python -c "$tc $printcmd.keys()" <$jsonfile 2>/dev/null \
|| python -c "$tc $printcmd" <$jsonfile 2>/dev/null)
# For returning space-separated values
echo $result|sed -e "s/[]|[|,|']//g"
#echo $result
}
它实际上仅处理数据的嵌套字典样式,但是它可以满足我的需要,并且对于遍历json很有用。它可能适合口味。
无论如何,对于那些不想从另一个外部依赖中获取资源的人来说,这是他们自己种的。当然,除了python。
例如 json_parser {field1} {field2}
将运行print myjson['{field1}']['{field2}']
,产生键或与关联的值(以{field2}
空格分隔)。