当前位置: 首页 > 面试题库 >

使用Unix工具解析JSON

谭山
2023-03-14
问题内容

我正在尝试解析从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
% ...

如何打印特定字段(以表示-v k=text)?


问题答案:

有许多专门用于从命令行操作JSON的工具,它们比使用Awk进行操作要容易和可靠得多,例如jq

curl -s 'https://api.github.com/users/lambda' | jq -r '.name'

您还可以使用系统上可能已经安装的工具(例如使用json模块的
Python)来执行此操作,从而避免任何额外的依赖关系,同时仍然可以使用适当的JSON解析器。以下假设您要使用UTF-8,原始JSON应该用UTF-8编码,这也是大多数现代终端所使用的:

Python 3:

curl -s 'https://api.github.com/users/lambda' | \
    python3 -c "import sys, json; print(json.load(sys.stdin)['name'])"

Python 2:

export PYTHONIOENCODING=utf8
curl -s 'https://api.github.com/users/lambda' | \
    python2 -c "import sys, json; print json.load(sys.stdin)['name']"

历史笔记

该答案最初推荐jsawk,它应该仍然有效,但是使用起来要麻烦一些jq,并且取决于安装的独立JavaScript解释器(比Python解释器少见),因此上述答案可能更可取:

curl -s 'https://api.github.com/users/lambda' | jsawk -a 'return this.name'

这个答案最初也使用了问题中的Twitter API,但是该API不再起作用,因此很难复制示例进行测试,而新的Twitter
API需要API密钥,因此我改用了GitHub API无需API密钥即可轻松使用。原始问题的第一个答案是:

curl 'http://twitter.com/users/username.json' | jq -r '.text'


 类似资料:
  • 本文向大家介绍SpringBoot实现的Mongodb管理工具使用解析,包括了SpringBoot实现的Mongodb管理工具使用解析的使用技巧和注意事项,需要的朋友参考一下 项目介绍 Mongodb网页管理工具,基于Spring Boot2.0,前端采用layerUI实现。 源于线上环境部署mongodb时屏蔽了外网访问mongodb,所以使用不了mongochef这样方便的远程连接工具,便Mo

  • 问题内容: 谁能推荐一个Unix(选择您的口味)JSON解析器,该解析器可用于检查管道中JSON响应中的值? 问题答案: 您可以使用Perl核心内置的模块使用此命令行解析器(如果愿意,可以将其放入bash别名):

  • 本文向大家介绍Python监控服务器实用工具psutil使用解析,包括了Python监控服务器实用工具psutil使用解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Python监控服务器实用工具psutil使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 服务器的监控通过安装一些常用的监控软件之外,有时也需要运行一些she

  • 在上一章中已经搭建好了 Android 开发环境,本章我们将一起通过 Eclipse 创建我们的第一个 Android App。 1. 创建 Android 工程 首先打开 Eclipse,在菜单栏依次选择“New” -> “Android App Project”。如果是第一次创建,可能没有“Android App Project”,那么可以选择“Other”->“Android”。主要有三个参

  • 主要内容:一、查看系统性能参数,,二、定位执行慢的SQL:慢查询日志,三、查看 SQL 执行成本:SHOW PROFILE,四、分析查询语句:EXPLAIN,EXPLAIN各列作用:一、查看系统性能参数 通过SHOW STATUS语句查询一些MySQL数据库服务器的性能参数、执行频率。 一些常用的性能参数如下: Connections:连接MySQL服务器的次数。 Uptime:MySQL服务器的上线时间。单位:s Slow_queries:慢查询的次数。 Innodb_rows_read:Se

  • 本文向大家介绍实例解析jQuery工具函数,包括了实例解析jQuery工具函数的使用技巧和注意事项,需要的朋友参考一下 一、$.browser对象属性   属性列表                  说明     webkit       webkit相关浏览器则返回true,否则返回false,如google,傲游。     mozilla       mozilla相关浏览器则返回true,否