json - JSON 有哪些好的 CLI 工具?

一般问题

虽然我可能会诊断事件的根本原因,确定它影响了多少用户,或者提取时间日志以评估最近代码更改对性能和吞吐量的影响,但我的工具保持不变:grepawksedtruniqsortzcattailheadjoinsplit 。为了将它们粘合在一起,Unix 为我们提供了管道,而对于更高级的过滤,我们有 xargs 。如果这些让我失望,总是有 perl -e

这些工具非常适合处理 CSV 文件、制表符分隔的文件、具有可预测行格式的日志文件或具有逗号分隔键值对的文件。换句话说,每行几乎没有上下文的文件。

XML 类似物

我最近需要浏览千兆字节的 XML 来构建用户使用情况的直方图。使用我拥有的工具这很容易,但是对于更复杂的查询,常规方法会失效。假设我有这样的文件:

<foo user="me">
    <baz key="zoidberg" value="squid" />
    <baz key="leela"    value="cyclops" />
    <baz key="fry"      value="rube" />
</foo>

假设我想生成一个从用户到每个 <baz> 的平均 <foo> 数量的映射。逐行处理不再是一种选择:我需要知道我当前正在检查哪个用户的 <foo>,以便我知道要更新谁的平均值。完成这项任务的任何类型的 Unix one 类轮都可能难以理解。

幸运的是,在 XML 领域,我们有 XPath、XQuery 和 XSLT 等出色的技术来帮助我们。

以前,我习惯于使用出色的 XML::XPath Perl 模块来完成上述查询,但在找到 TextMate Plugin that could run an XPath expression against my current window 后,我停止编写一次性 Perl 脚本来查询 XML。我刚刚发现 XMLStarlet 在我输入时正在安装,我期待在未来使用它。

JSON 解决方案?

所以这引出了我的问题:有没有类似的 JSON 工具?一些调查任务需要我对 JSON 文件进行类似的查询只是时间问题,而且如果没有 XPath 和 XSLT 等工具,这样的任务将会困难得多。如果我有一堆看起来像这样的 JSON:

{
  "firstName": "Bender",
  "lastName": "Robot",
  "age": 200,
  "address": {
    "streetAddress": "123",
    "city": "New York",
    "state": "NY",
    "postalCode": "1729"
  },
  "phoneNumber": [
    { "type": "home", "number": "666 555-1234" },
    { "type": "fax", "number": "666 555-4567" }
  ]
}

想要找到每个人拥有的电话号码的平均数量,我可以用 XPath 做这样的事情:

fn:avg(/fn:count(phoneNumber))

问题

  1. 有没有命令行工具 可以在此“查询” JSON 文件 方式?
  2. 如果你必须处理一堆 Unix 命令行上的 JSON 文件, 您使用什么工具?
  3. 哎呀,还有工作要做吗 制作这样的查询语言 对于 JSON?
  4. 如果您确实在 你的日常工作,你做什么 喜欢/不喜欢他们?在那儿 有什么问题吗?

我注意到越来越多的数据序列化正在使用 JSON 完成,因此在未来分析大型数据转储时,此类处理工具将至关重要。 JSON 的语言库非常强大,编写脚本来进行这种处理很容易,但要真正让人们玩转数据外壳工具是需要的。

相关问题

  • Grep and Sed Equivalent for XML Command Line Processing
  • Is there a query language for JSON?
  • JSONPath or other XPath like utility for JSON/Javascript; or Jquery JSON

最佳答案

我刚刚发现了这个:

http://stedolan.github.io/jq/

“jq 是一个轻量级且灵活的命令行 JSON 处理器。”

2014 年更新:

@user456584 提到:

There's also the 'json' command (e.g. 'jsontool'). I tend to prefer it over jq. Very UNIX-y. Here's a link to the project: github.com/trentm/json –

在 http://github.com/trentm/json 的 json README 中有一长串类似的东西

  • jq: http://stedolan.github.io/jq/
  • json:select: http://jsonselect.org/
  • jsonpipe: https://github.com/dvxhouse/jsonpipe
  • json-command: https://github.com/zpoley/json-command
  • JSONPath: http://goessner.net/articles/JsonPath/, http://code.google.com/p/jsonpath/wiki/Javascript
  • jsawk: https://github.com/micha/jsawk
  • jshon: http://kmkeen.com/jshon/
  • json2: https://github.com/vi/json2
  • fx: https://github.com/antonmedv/fx

https://stackoverflow.com/questions/2933126/

相关文章:

javascript - 保留未定义的 JSON.stringify 否则将删除

java - Maven 与 npm 类似吗?

json - 如何让 cURL 仅输出 HTTP 响应正文(JSON)而不输出其他 header 等

c# - 将 XML 转换为动态 C# 对象

asp.net - 如何使用 IIS 7.5 压缩来自 ASP.NET MVC 的 Json 结果

java - Gson:有没有更简单的方法来序列化 map

python - 将 JSON 数组转换为 Python 列表

json - AngularJS - 服务器端验证和客户端表单

java - Android 上的最佳 REST 客户端框架/实用程序

javascript - 对象和哈希之间的区别?