python使用json,jsonpath.jsonpath

  python使用json,jsonpath.jsonpath

  前言JsonPath是一个信息抽取类库,用于解析多层嵌套的json数据。它是从JSON文档中提取指定信息的工具,并提供了多种实现保本的理由:JavaScript/Python/PHP和Java。

  JSON的Path相当于XML的XPath。

  安装pip安装jsonpath官方文档:http://goessner.net/articles/JsonPath

  使用导入jsonpath方法。

  RES=jsonpath.jsonpath (dic_name, $.key _ name’)详细解释:参数DIC _ name的数据类型为python字典类型。

  $.“key_name”表达式:表示获得所有带有key_name的值。其中:“$”表示最外面的{},而“.”意味着模糊匹配。

  当没有数据的表达式被传入时,该函数返回一个假布尔值。

  返回值的数据类型为python列表。

  与XPath语法相比,Json结构清晰,可读性高,复杂度低,易于匹配。

  下表对应于XPath的用法:

  路径语言

  JSONPath

  形容

  /

  $

  根节点

  .

  @

  电流波节

  /

  .或者[]

  获取子节点

  .

  不适用的

  获取Jsonpath不支持的父节点。

  //

  .

  不管地点,符合条件的都选。

  *

  *

  匹配所有元素节点

  @

  不适用的

  根据属性访问,Json不支持,因为Json是键值递归结构,不需要属性访问。

  []

  []

  迭代器标记(可以在里面做简单的迭代操作,比如数组下标,按内容取值等。)

  [,]

  在迭代器中支持多选。

  []

  ?()

  支持过滤操作。

  不适用的

  ()

  支持表达式求值

  ()

  不适用的

  JsonPath不支持分组

  JSON表达式示例

  示例1

  d={

  “error _ code”:0,

  stu_info :

  {

   id: 2059,

  姓名:小白,

  性别:男性,

  年龄:28岁,

  地址,河南省济源市北海路32号,

  等级:天蝎座,

  电话: 18378309272 ,

  金:10896,

  信息:{

  卡:434345432,

  银行名称:中国银行

  }

  },

  {

   id: 2067,

  姓名:小黑,

  性别:男性,

  年龄:28岁,

  地址,河南省济源市北海路32号,

  等级:天蝎座,

  电话: 12345678915 ,

  黄金:100

  }

  ]

  }

  Res=d[stu_info][1][name] #获取学生姓名的原始方式:通过在字典中查找key和list方法中的下标索引。

  Print(res) #输出结果是:小黑

  导入jsonpath

  Res 1=jsonpath.jsonpath (d, $.name) #嵌套N层也可以得到所有学生姓名信息,$表示最外层的{},意味着模糊匹配。

  Print(res1) #输出结果是list: [小白,小黑]

  res2=jsonpath.jsonpath(d, $.银行名称’)

  Print(res2) #输出结果为列表:[中国银行]

  Res=jsonpath.jsonpath (d, $.name123) #当传入一个不存在的键(name)时,返回False

  Print(res3) #输出结果为:False示例2

  导入jsonpath

  d={

  “error _ code”:0,

  stu_info :

  {

  id: 314,

  名称:矿泉水,

  性别:男性,

  年龄:18岁,

  地址:北京市昌平区,

  等级:摩羯,

  电话: 18317155663 ,

  金:100,

  汽车:[

  {car1 :宝马 },

  {car2: ben-z},

  ]

  }

  ]

  }

  Result=jsonpath.jsonpath (d, $.car2) #模糊匹配

  1=jsonpath.jsonpath (d, $。stu_info) #获取stu_info中的所有内容

  2=jsonpath.jsonpath (d, $。stu_info [0]) #获取stu_info中的第一个元素

  3=jsonpath.jsonpath (d, $。斯图信息[0]。id) #获取stu _ info中第一个元素的id

  打印(结果)

  打印(结果1)

  打印(结果2)

  打印运行结果(结果3):

  [本-z]

  [{id: 314,姓名:矿泉水,性别:男,年龄:18,地址:北京市昌平区,年级:摩羯座,电话: 18317155663

  [{id: 314,姓名:矿泉水,性别:男,年龄:18,地址:北京市昌平区,年级:摩羯座,电话: 18317155663

  [314]期待陌生,拥抱惊喜。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: