unix文件解析java_使用Unix工具解析JSON

我正在尝试解析从curl请求返回的JSON,如下所示:

curl 'http://twitter.com/users/username.json' |

sed -e 's/[{}]/''/g' |

awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}'

上面将JSON分为多个字段,例如:

% ...

"geo_enabled":false

"friends_count":245

"profile_text_color":"000000"

"status":"in_reply_to_screen_name":null

"source":"web"

"truncated":false

"text":"My status"

"favorited":false

% ...

如何打印特定字段(由-vk=text )?

#1楼

您可以使用jshon :

curl 'http://twitter.com/users/username.json' | jshon -e text

#2楼

使用PHP CLI解析JSON

可以说是题外话,但是由于优先权占据主导地位,因此这个问题在不提及我们可靠和忠实的PHP的情况下仍然是不完整的,对吗?

使用相同的示例JSON,但让我们将其分配给变量以减少模糊性。

$ export JSON='{"hostname":"test","domainname":"example.com"}'

$ echo $JSON|php -r 'echo json_decode(file_get_contents("php://stdin"))->hostname;'

或使用fgets指出并在CLI常量STDIN处已打开的流。

$ echo $JSON|php -r 'echo json_decode(fgets(STDIN))->hostname;'

欢乐!

#3楼

您可以为您的平台下载jq二进制文件并运行( chmod +x jq ):

$ curl 'https://twitter.com/users/username.json' | ./jq -r '.name'

它从json对象中提取"name"属性。

jq主页说它就像sed一样用于JSON数据。

#4楼

也有xml文件的人可能想看看我的Xidel 。 这是一个cli,无依赖项的JSONiq处理器。 (即,它还支持XQuery进行xml或json处理)

问题中的示例为:

xidel -e 'json("http://twitter.com/users/username.json")("name")'

或使用我自己的非标准扩展语法:

xidel -e 'json("http://twitter.com/users/username.json").name'

#5楼

使用Node.js

如果系统已安装节点 ,则可以使用-p print和-e带有JSON.parse脚本标志来提取所需的任何值。

一个使用JSON字符串{ "foo": "bar" }并提取“ foo”值的简单示例:

$ node -pe 'JSON.parse(process.argv[1]).foo' '{ "foo": "bar" }'

bar

由于我们可以访问cat和其他实用程序,因此可以将其用于文件:

$ node -pe 'JSON.parse(process.argv[1]).foo' "$(cat foobar.json)"

bar

或任何其他格式,例如包含JSON的URL:

$ node -pe 'JSON.parse(process.argv[1]).name' "$(curl -s https://api.github.com/users/trevorsenior)"

Trevor Senior

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值