wendingding

javaScript系列 [09]-javaScript和JSON (拓展)

本文输出JSON搜索和JSON转换相关的内容,是对前两篇文章的补充。

JSON搜索

在特定的开发场景中,如果服务器端返回的JSON数据异常复杂(可能超过上万行),那么必然就有对JSON文档进行搜索的需求。在对JSON文档进行搜索的时候,建议使用专业的JSON搜索类库和工具来实现,这可以极大的简化JSON文档搜索的工作并降低工作难度。

JSON搜索的具体适用场景:对于某次API调用,我们只需要其中的部分数据,这种情况我们就可以根据某个标准来对返回的JSON内容进行搜索和过滤。

本文将会先后介绍多款处理JSON搜索的类库(工具),包括但不限于JSONPathJSON Pointerjq等,在对各种方案进行介绍的时候将会从方案的优缺点、具体的使用方式等角度切入,开发中可以根据实际的开发场景和各工具自身的特点来进行选择。

工具001 → jq

jq    是一个提供了命令行界面的JSON搜索工具。
功能 可使用自身特定的查询语法来过滤JSON和截取数组,类似于JSON中的sed。
生态 除命令行外,拥有优秀的基于Web的jq测试器,甚至Node社区还以npm模块形式发布了教程
优势

  • 提供丰富的搜索和过滤功能。
  • 大多数编程语言都对jq提供良好的支持。
  • jq相关文档质量较高,且拥有友好的交互式教程。
  • 拥有优秀的在线测试工具,能够对查询提供快速反馈。
  • 在命令行中能够很好的与cURL以及管道操作等协同工作。
  • 使用C语言编写的,没有运行时依赖,可运行在Linux,OS X和Windows等平台。

资料 官网Github仓库Ubuntu-jq手册Hyperpolyglot JSON工具Jackson类库Ruby-jq gem
语法

  ======基本语法======
  .     输出所有的文档内容。
  |     管道符,传递数据流。
  .key  输出指定key对应的部分文档。
  .[ ]  输出数组中指定索引对应的元素。

  ======查询语法示例========
  .person[0]	获取JSON文档person数组中的第一个元素。
  .person[-1]	获取JSON文档person数组中的最后一个元素。
  .person[0:3]	获取JSON文档person数组中的前面三个元素。
  .person[] | select (.age>20 ) 获取JSON文档中满足要求(age > 20)的所有数据。

安装

  • OSX系统 建议使用Homebrew来安装,具体命令为:$ brew install jq
  • windows系统 建议使用Chocolatey NuGet来安装,具体命令为: $ chocolatey install jq
  • 当然也可以通过git clone仓库源码来进行安装,具体细节以及其它系统处理请参考Download jq

这里给出OSX系统中通过命令行安装jq的具体细节和示例。

wendingding$ brew install jq
Updating Homebrew...
==> Installing dependencies for jq: oniguruma
==> Installing jq dependency: oniguruma
==> Downloading https://homebrew.bintray.com/bottles/oniguruma-6.8.2.high_sierra
######################################################################## 100.0%
==> Pouring oniguruma-6.8.2.high_sierra.bottle.tar.gz

分类:

技术点:

相关文章: