JsonPath规则详解
JSON是一种轻量级的数据交换格式。一个序列化的对象或数组,其中对象由键和键值组成,键值可以是对象、数组、数字、字符串或者 (false、null、true)中的一个。
对象的构成:{ 键: 键值 }
{“hello”:123} 在这个对象中,键为字符串 “hello”,键值为数字 123;
{“hello”:null} 在这个对象中,键为字符串 “hello”,键值为 null。
数组的构成:[ 数组 或 对象 ]
[ {“test1”:123} , {“test2”:234} ] 在这个数组中,包含了2个对象。
当然,数组里面也可以同样包含对象或数组,对象里面也可以包含对象或数组。
正常的接口都会给出返回的示例,我们可以在此处看到返回的数据结构:
对于返回的数组,我们需要从中获取我们需要的数据,就需要使用JSON Path规则进行索引。
对于在JSON Path中,$表示根元素,我们根据不同的类型,采用不同的索引方式。
对于对象,我们可以给出键来索引值。
例如:
{“hello”:123}
我们为了获取键值123,可以根据键来索引;
$.hello 或者 $[‘hello’]
注意,如果键为中文,必须采用 $[‘键’] 的形式。
对于数组,我们必须按顺序来索引。
例如 [ {“test1”:123} , {“test2”:234} ] 我们需要索引数组里面第一个对象的值,则 $[0].test1;需要索引数组里面的第二个对象的值, $[1].test2。[0]表示索引数组里面的第一个对象或数组或值,[1]表示索引数组里面的第二个对象或数组或值,以此类推…
下面我们尝试一下复杂的索引规则
{
"address" : "浙江省杭州市余杭区文一西路969号",
"config_str" : "{\\\"side\\\":\\\"face\\\"}",
"face_rect":{
"angle": -90,
"center":{
"x" : 952,
"y" : 325.5
},
"size":{
"height":181.99,
"width":164.99
}
},
"card_region":[
{"x":165,"y":657},
{"x":534,"y":658},
{"x":535,"y":31},
{"x":165,"y":30}
],
"face_rect_vertices":[
{
"x":1024.6600341796875,
"y":336.629638671875
},
{
"x":906.66107177734375,
"y":336.14801025390625
},
{
"x":907.1590576171875,
"y":214.1490478515625
},
{
"x":1025.157958984375,
"y":214.63067626953125
}
],
"name" : "张三",
"nationality": "汉",
"num" : "1234567890",
"sex" : "男",
"birth" : "20000101",
"success" : true
}
获取 address: $.address 或 $[‘address’]
获取 card_region 里面第一个里面x的值:$.card_region[0].x 或 $.card_region[0]['x']
具体可以使用 https://jsonpath.com 进行测试。