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





 

 

posted @ 2021-10-13 16:46  xiaoyongdata  阅读(94)  评论(0编辑  收藏  举报