JSON代码格式化 进行查询筛选

JSON是前端编程经常用到的格式,对于PHP或者Python,解析JSON都不是什么大事,尤其是PHP的json_encode和json_decode,干的相当的漂亮。Linux下也有处理处理JSON的神器:jq。
   对于JSON格式而言,jq就像sed/awk/grep这些神器一样的方便,而也,jq没有乱七八糟的依赖,只需要一个binary文件jq,就足矣。下面我们看下jq的使用。
   1 格式化JSON
[email protected]:~/code/php/json$ cat json_raw.txt
{"name":"Google","location":{"street":"1600 Amphitheatre Parkway","city":"Mountain View","state":"California","country":"US"},"employees":[{"name":"Michael","division":"Engineering"},{"name":"Laura","division":"HR"},{"name":"Elise","division":"Marketing"}]}
   上面的JSON是PHP json_encode之后,echo出来的字符串,很明显,可读性太差。前一阵子写文档,需要将前后段JSON写入文档,我当时是用是网上的JSON格式化工具做的。事实上,jq就可以检查JSON的合法性,并把JSON格式化成更友好更可读的格式:
    cat json_raw.txt | jq .

   看到上图,将一团乱麻的JSON格式化成个更可读的形式。其实背后另外检查了JSON的合法性。如果JSON不合法,jq .会报错。我故意写个错误的JSON:
[email protected]:~/code/php/json$ cat json_err.txt
{"name":"Google","location":{"street":"1600 Amphitheatre Parkway","city":"Mountain View","state":"California","country":"US"},"employees":[{"name":"Michael","division":"Engineering"}{"name":"Laura","division":"HR"},{"name":"Elise","division":"Marketing"}]}
   上面JSON中加粗和斜体部分,遗漏了一个逗号,所以这个JSON是错误的,jq轻松的可以轻松的检查出来:
    [email protected]:~/code/php/json$ cat json_err.txt |jq .
    parse error: Expected separator between values at line 1, column 183
    2 JSON parse
   如上图json,jq如何解析JSON,根据key获取value?
    {
        “key_1”:"value_1",
        “key_2”:"value_2",
    }
    如何根据key获取value?
    jq ‘.key‘

   解析不存在的元素,会返回null
    echo ‘{"foo": 42, "bar": "less interesting data"}‘ | jq .nofoo
    null
   3 JSON nested parse(嵌套解析)
    cat json_raw.txt | jq ‘.location.state‘
    "California"
   4 JSON parse array
    cat json_raw.txt | jq ‘.employees[1].name‘
    "Laura"
   5 内建函数
  jq还有一些内建函数如 key,has
  key是用来获取JSON中的key元素的:
cat json_raw.txt | jq ‘keys‘
[
  "employees",
  "location",
  "name"
]
   has是用来是判断是否存在某个key:
cat json_raw.txt | jq ‘has("name")‘
true

cat json_raw.txt | jq ‘has("noexisted")‘
false
   与JSON相关的我就暂时介绍到这里,希望进一步了解jq并使用的可以去http://stedolan.github.io/jq/manual/,希望了解源码实现的,可以去https://github.com/stedolan/jq,意料之中的事情是 作者用来flex和bison来parse json。我们的示例JSON来自参考文献第一篇。用google搜索,kernalpanic中有篇文章介绍了jshon和json.sh提供了另外的思路。不过我挺喜欢及
时间: 2024-10-05 18:22:05

JSON代码格式化 进行查询筛选的相关文章

手写js代码格式化json数据

目录 手写js代码格式化json数据 手写js代码格式化json数据 使用JavaScript格式化json数据.需要引入jQuery库.代码简单易懂,主要思想是递归,因为每层的数据格式都是一样的. function jsonFormat(txt, tiperror, compress/*是否为压缩模式*/) {/* 格式化JSON源码(对象转换为JSON文本) */ var indentChar = ' '; if (/^\s*$/.test(txt)) { if (tiperror) ale

vim代码格式化插件clang-format

title: vim代码格式化插件clang-format date: 2017-12-12 20:28:26 tags: vim categories: 开发工具 安装vim-clang-format插件 项目地址: vim-clang-format 如果用Vundle管理vim插件,直接在.vimrc中添加一行 Plugin 'vim-clang-format' 运行:PluginInstall就可以自动安装插件 "配置 let g:clang_format#auto_format_on_i

10 行 Python 代码实现模糊查询/智能提示

10 行 Python 代码实现模糊查询/智能提示 1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列表供用户选择. 样例如下: Vim (Ctrl-P) Sublime Text (Cmd-P) '模糊匹配'这是一个极为有用的特性,同时也非常易于实现. 2.问题分析: 我们有一堆字符串(文件名)集合,我们根据用户的输入不断进行过滤,用户的输入可能是字符串的一部分.我们就以下面的

eclipse中代码格式化组合键失效了

因为最近在整理java笔记,发现代码格式化的组合键失效了,但其他的组合键是好着的,设置里面找了也是对着的. 最后是在输入法的设置里面发现了它,原来是快捷键冲突了.取消输入法里面 的快捷键就好了,或者改掉也行.

Xcode 快捷键 特别是代码格式化代码ctrl+i

1. 文件 CMD + N: 新文件CMD + SHIFT + N: 新项目CMD + O: 打开CMD + S: 保存CMD + SHIFT + S: 另存为CMD + W: 关闭窗口CMD + SHIFT + W: 关闭文件 2. 编辑 CMD + [: 左缩进CMD + ]: 右缩进 CMD + CTRL + LEFT: 折叠CMD + CTRL + RIGHT: 取消折叠CMD + CTRL + TOP: 折叠全部函数CMD + CTRL + BOTTOM: 取消全部函数折叠CTRL +

转:Delphi语言最好的JSON代码库 mORMot学习笔记1

mORMot没有控件安装,直接添加到lib路径,工程中直接添加syncommons,syndb等到uses里 --------------------------------------------------------- 在进行网络编程中需要JSON对象的构建与解析,这个Delphi XE+自带:{$IF CompilerVersion>22}, System.JSon{$ELSE}, DBXJSON{$IFEND}不过,不好用,大家更喜欢SuperObject.我本人以前一直用JsonDa

iOS插件详解之----CLangFormat(代码格式化管理插件)(2016.1.12王彬)

iOS插件详解之----CLangFormat(代码格式化管理)(2016.1.12王彬) 虽然在项目创建和团队组建的初期,我们就把公共约定以及一些规范定下来了,并且由于我们的代码是通过Git来做版本控制的,web上直接就支持Markdown格式的readme文件,可以随时看到最新的版本,但是这种规范只能依靠个人的意识,或者通过代码Review来解决,而且做代码Review的时候,你也不好意思总是写上一堆诸如“这里要加个空格”.“那里要加上换行”的评论吧?如果不管,久而久之,会因为每个人的习惯不

Dreamweaver CS5 CS6 代码格式化、美化插件(可同一时候格式化HTML、JavaScript、CSS )眼下最好用的代码格式化扩展

Dreamweaver CS5 CS6 代码格式化.美化插件(可同一时候格式化HTML.JavaScript.CSS )眼下最好用的代码格式化扩展. 众所周知,Dreamweaver CS5 CS6 自带的"应用源格式"仅仅能单独格式化HTML文件和CSS文件,不能格式化JavaScript文件.更不能同一时候格式化内嵌在HTML代码里的javascript代码,此插件就是为了替代自带的代码格式化工具而出现的. 该插件能单独格式化css文件.javascript文件.html文件,也能

CSS代码格式化

将所有代码复制到系统记事本里,另存为html格式的网页文件,之后用浏览器打开即可 工具代码: <style>textarea{width:100%;height:80%;}</style> <div class="toolcode"> <script language=JavaScript> <!-- function $() { var elements = new Array(); for (var i = 0; i <