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
本文来自博客园,作者:xiaoyongdata(微信号:xiaoyongdata),转载请注明原文链接:https://www.cnblogs.com/xiaoyongdata/p/15402905.html