Json解析案例-teachers数据集
背景:
通过平台执行接口时,接口往往返回的JSON串,所以平台要能提供方便快捷的JSON解析函数。
一、Json字符串:
1 {
2 "lemon": {
3 "teachers": [
4 {
5 "id": "101",
6 "name": "张三",
7 "addr": "四川成都",
8 "age": 25
9 },
10 {
11 "id": "102",
12 "name": "李四",
13 "age": 28
14 },
15 {
16 "id": "103",
17 "name": "Mike",
18 "addr": "广东深圳",
19 "age": 16
20 },
21 {
22 "id": "104",
23 "name": "王哥",
24 "addr": "广东广州",
25 "age": 29
26 }
27 ],
28 "salesmans": [
29 {
30 "id": "105",
31 "name": "毛毛",
32 "age": 17
33 },
34 {
35 "id": "106",
36 "name": "大树",
37 "age": 27
38 }
39 ]
40 },
41 "avg": 25
42 }
二、JsonPath代码
1 $.lemon.teachers[*].name
2
3 获取所有老师的的名称
4
5 $..name
6 ..name
7 获取所有人的名称
8
9 $.lemon.*
10 所有的老师和销售(没有指定属性,无法直接显示)
11
12 $.lemon..age
13 $..age
14 所有人的年龄
15
16 $.lemon.teachers[*].age
17 ..teachers[*].age
18 ..teachers..age
19 所有老师的年龄
20
21 $.lemon.teachers[1].name
22 索引为1(第2个)老师的信息
23
24 $..teachers[1,2].name
25 ..teachers[:2].name
26 ..teachers[2:].name
27 ..teachers[0:2].name
28 ..teachers[-1].name (不支持)
29 ..teachers[-1:].name (倒数一个)
30 ..teachers[-2:].name (倒数两个)
31 指定范围老师的姓名
32
33
34 ..teachers[?(@.age< 20)].name
35 所有年龄小于20的年龄信息
36
37
38 ..teachers[?(@.age<=$['avg'])].name
39 小于或等于平均年龄的老师信息
40
41 $..teachers[?(@.name=~ /.*PPY/i)].name
42 所有名称满足正则表达式的老师信息 (忽略大小写)
43
44 $..name (string类型)
45 ..age (integer类型)
46 所有的信息
47
48 ..teachers.length() (不支持)
49 老师的数量
50
51 #演示根据条件选择(当包含数据有多行时,要取出其中某一行时特别有用)
52 ..teachers[?(@.id=="103")].name (不支持双引号)
53 ..teachers[?(@.id=='103')].name
54 ..teachers[?(@.age>=25)].name
55 指定ID的老师的name ,语法 [?(@.属性条件表达式)]
56
57
58 #多条件(or、and)59 ..teachers[?(@.age<=20 || @.age>=28)].name60 ..teachers[?(@.age<=20 && @.id=='103')].name
Json解析案例-teachers数据集的更多相关文章
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...
- android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】
android json解析及简单例子+Android与服务器端数据交互+Android精彩案例[申明:来源于网络] android json解析及简单例子:http://www.open-open. ...
- Java基础-处理json字符串解析案例
Java基础-处理json字符串解析案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名开发人员,想必大家或多或少都有接触到XML文件,XML全称为“extensible ...
- JSON解析和XML解析对比
JSON解析和XML解析是较为普遍的两种解析方式,其中JSON解析的市场分额更大.本文系统的分析两种解析方式的区别,为更好地处理数据作准备.由于目前阶段主要是做移动开发,所以本文所描述的JSON解析和 ...
- IOS中Json解析的四种方法
作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSON格式化校验 ...
- JSON解析之——Android
JSON解析之——Android 一.google天气案例 之前xml学习中的google天气的例子非常形象,所以我们继续以google天气作为案例进行学习,下面是我从google官网下载下来的天气J ...
- Json应用案例之FastJson
这几天在网上找关于Json的一些案例,无意当中找到了一个我个人感觉比较好的就是阿里巴巴工程师写的FastJson. package com.jerehedu.fastjson; import java ...
- 接口测试入门(3)--使用httpClient进行登录用例操作/set-cookies验证/ List<NameValuePair>设置post参数/json解析
(最近学的都是很基础的接口测试,都是基于UI界面可见的接口,就是发请求,接收响应,分析返回的结果,校验,对共通模块进行封装,仅此而已,其实做自动化的思路基本都是如此,UI也是.) 现在开始用httpC ...
- Android JSON 解析关键代码
Android Json 解析其实还是蛮重要的知识点,为什么这么说呢,因为安卓通信大部分的协议都是使用 json 的方式传输,我知道以前大部分是使用的 xml ,但是时代在发展社会在进步,json 成 ...
随机推荐
- Kubernetes Pod 全面知识
Pod 是在 Kubernetes 中创建和管理的.最小的可部署的计算单元,是最重要的对象之一.一个 Pod 中包含一个或多个容器,这些容器在 Pod 中能够共享网络.存储等环境. 学习 Kubern ...
- 最难忘的一次bug:谢谢实习时候爱学习的自己
前言 时间的车轮一直向前不停,试图在时光洪流中碾碎一些久远的记忆.虽然记忆中的人离我越来越远,但是故事却越来越深刻. 当在博客园看到这次的正文题目是"最难忘的bug",脑海里瞬间浮 ...
- THUSC2021 游记
Day -6 - 2459343 请了一天假在家卷 whk,u1s1 星期六为啥要去上学呢(bushi 中午 12:00 左右得知自己有去参加 THUSC 的资格 然后就是一堆待填写的资料和报名表 发 ...
- Sums gym100753M
Sums gym100753M 同余最短路模板,然而这个东西貌似也可以做去年D1T2 首先我们选择一个模数作为基准,然后剩下的这样连边: 对于一个面值为 x 的硬币 ,当前在 u 这个点(感性理解一下 ...
- CF1437G Death DBMS
题面传送门. 题意简述:给出 \(n\) 个字符串 \(s_i\),每个 \(s_i\) 初始权值为 \(0\).\(q\) 次操作:修改 \(s_i\) 的权值:查询给出字符串 \(q\) 能匹配的 ...
- SNPEFF snp注释 (添加自己基因组)
之间介绍过annovar进行对snp注释,今天介绍snpEFF SnpEff is a variant annotation and effect prediction tool. It annota ...
- 多线程高级篇1 — JUC — 只弄到处理高并发集合问题
1.线程池 1.1).什么是线程池? 池( pool ),就是一个容器,所以线程池就是把多个线程对象放到一个容器中 1.2).如何创建线程池? 先来了解几个常识 Executor -- 这是一个接口( ...
- 在C++的map类型中按value排序
1.将map转化为vector类型 2.使用sort函数对vector进行排序,写出compare比较器函数 3.比较器中指明按照第几个元素来排序 1 #include <iostream> ...
- Linux 参数代换 命令 xargs
xargs 命令也是管道命令中的一员.xargs命令的功能简单来说就是参数代换.那么什么叫做参数代换,这里首先要了解管道的概念.在 linux管道 命令一节中我们详细介绍了管道命令的概念.这里我们只是 ...
- CPU如何同时运行多个进程?
1 # -*- coding: utf-8 -*- 2 import re 3 mem = [x for x in re.split('[\r|\n]', ''' 4 store a 1 5 add ...