美文网首页
jsonpath的实际场景应用

jsonpath的实际场景应用

作者: 软件开发技术修炼 | 来源:发表于2023-06-12 18:25 被阅读0次

遇到一个疑问点,将整个知识点再回顾下

1、做接口自动化时,提取传参值,并将参数池中的值赋值给它
for k, v in data.items():
      if '$.' in v:           #检查字符串'$.'是否存在于变量v中
            v = jsonpath(cls.access_value, v)[0]      #如果存在,代码将使用jsonpath库从cls.access_value中提取相应的值
            #返回一个列表并将其赋给v,获取返回的列表中的第一个元素
            data[k] = v                # 将v存储在字典data的键k中       
print(f'最终返回参数:{data}')

注意:这段代码依赖于jsonpath库的存在,并且假设jsonpath(cls.access_value, v)将返回一个非空列表。如果jsonpath返回的列表为空,代码可能会引发索引错误。

2、根据注意,增加判断如下:
for k, v in data.items():
      if '$.' in v: 
            if not jsonpath(cls.access_value, v):
                  return {}          
            v = jsonpath(cls.access_value, v)[0]     
            data[k] = v              
print(f'最终返回参数:{data}')
3、jsonpath的使用方法讲解

JSONPath是一种用于在JSON文档中定位和提取数据的查询语言。它类似于XPath,但是专门用于JSON格式的数据。
下面是一些常用的JSONPath查询语法和示例:

(1)根元素 '' 例如: '' 表示整个JSON文档的根元素。

(2)子元素 '.'
例如: '$.store' 表示根元素下的名为 "store" 的子元素。

(3)子元素递归 '..'
例如:'$.store..price' 表示根元素下的所有子元素中名为 "price" 的元素。

(4)数组元素索引 '[index]'
例如: '$.store.book[0]' 表示根元素下的 "store" 对象中的 "book" 数组的第一个元素。

(5)过滤器 '[?()]'
例如: '$.store.book[?(@.price < 10)]' 表示根元素下的 "store" 对象中的 "book" 数组中价格小于10的元素。

(6)多个条件的逻辑操作符 '&&', '||'
例如: '$.store.book[?(@.price < 10 && @.category == 'fiction')]' 表示根元素下的 "store" 对象中的 "book" 数组中价格小于10且类别为 "fiction" 的元素。

这只是JSONPath查询语法的一小部分,还有更多高级的功能和操作符可以使用。你可以根据具体的需求和JSON文档结构来编写自己的JSONPath查询。

4、jsonpath(a, b)是一个函数调用,它的作用是从JSON对象a中提取与路径b匹配的值。

具体解释如下:
a 是一个JSON对象或数组,它是被查询的目标数据。
b 是一个字符串,它是用于定位和提取数据的JSONPath表达式。
jsonpath(a, b)的返回值是一个列表,其中包含与路径b匹配的所有值。如果没有匹配的值,返回一个空列表。

(1)JSON对象的例子:
假设有如下JSON对象:

{
  "name": "John",
  "age": 30,
  "address": {
    "city": "New York",
    "state": "NY"
  }
}

# jsonpath(a, "$.name") 返回 ["John"],表示匹配到了名为 "name" 的值。
# jsonpath(a, "$.address.city") 返回 ["New York"],表示匹配到了地址中的城市。

(2)JSON数组的例子:
假设有如下JSON数组:

[
  {
    "name": "John",
    "age": 30
  },
  {
    "name": "Alice",
    "age": 25
  }
]

# jsonpath(a, "$[0].name") 返回 ["John"],表示匹配到了索引为0的元素的名为 "name" 的值。
# jsonpath(a, "$[*].age") 返回 ["30", "25"],表示匹配到了所有元素的年龄。

相关文章

  • 11.jsonpath模块

    jsonpath模块 知识点 -了解 jsonpath模块的使用场景 -掌握 jsonpath模块的使用 1. j...

  • JSONPath入门及测试

    JSONPath入门 JSONPath - 是xpath在json的应用,是参照xpath表达式来解析XML文档的...

  • JSONPath 表达式的使用

    一、JSONPath使用需要的包 二、使用说明 1、JSONPath是xpath在json的应用2、JSONPat...

  • Rxjava实际应用场景

    Scheduler线程切换——eg:后台线程取数据,主线程展示 CheckBox状态实时更新 输入框改变即网络请求...

  • RabbitMQ实际应用场景

    场景1:在对商品增删改查的时候发送消息 1、新增/修改商品后台数据库信息2、数据库修改后,发送商品id消息到消息队...

  • Runtime的实际应用场景

    这里只呈现实际的应用场景,demo 已经传到github1.动态给分类添加属性2.方法的交换swizzling3....

  • RunLoop -- 相关问题的总结

    1、RunLoop在实际场景的应用 RunLoop -- 在实际开发中的应用 2、RunLoop内部实现逻辑 Ru...

  • 统计模型实际应用场景

    参考常用统计模型: 决策树&回归&K均值聚类&因子分析分别对应数据分析的思路:分类,回归,聚类,降维。 1 决策树...

  • Runtime实际应用场景详解

    目录 1.给分类增加属性2.方法添加和替换和KVO实现3.weak 释放 nil 的过程4.消息转发(热更新)解决...

  • (三) runLoop 的实际应用场景

    目录 一 . NSTimer 1. 从 timer 的创建方式了解 timer 是否被添加到 runLoop 2....

网友评论

      本文标题:jsonpath的实际场景应用

      本文链接:https://www.haomeiwen.com/subject/zwfqydtx.html