js获取json中的某个值(两个字符串比较)

在接口测试或其他测试场景中,我们经常需要获取JSON中的某路径下的值进行校验,即从JSON中抽取指定信息。 本文主要介绍满足该需求的Pythonjmespath库,除此之外还有Jsonpath,有兴趣的可以自行了解。 安装 pipinstalljmespath 代码示例 我们以下面test_json这个较为复杂的Json对象为示例。 test_json={ "code":2…

在接口测试或别的检测情景中,大家常常必须获得JSON中的某途径下的值开展校验,即从JSON中抽取特定信息。

文中主要是详细介绍达到该需要的Python jmespath库,此外也有Jsonpath,有兴趣的可以自己掌握。

组装

pip install jmespath

编码示例

大家以下边test_json 这一比较繁杂的Json目标为示例。

test_json = {
    \"code\": 200,
    \"desc\": {
        \"info\":\"表明\",
        \"update\":\"2021年3月6日\"
    },
    \"data\": [
        {
            \"apps\": {
                \"app_op_seq\": [
                    {
                        \"action\": \"点一下\",
                        \"module_name\": \"淘宝聚划算\",
                        \"module_type\": \"resource\"
                    }
                ]
            },
            \"content\": {
                \"des\": {
                    \"company_name\": \"NIKE\",
                    \"intent\": [
                        \"full\"
                    ]
                },
                \"rel\": [
                    {
                        \"des\": {
                            \"person_name\": \"皇甫玖林\",
                            \"political_status\": \"王牌vip会员\"
                        },
                        \"ont\": [
                            {
                                \"name\":\"Person\",
                                \"id\":1
                            },
                            {
                                \"name\":\"Company\",
                                \"id\":2
                            },
                            {
                                \"name\":\"Car\",
                                \"id\":3
                            }
                        ],
                        \"relIdx\": [
                            0,
                            \"8-9\"
                        ],
                        \"relName\": \"皇甫\",
                        \"segs\": [
                            \"耐克篮球鞋\"
                        ]
                    }
                ],
                \"segs\": [
                    \"耐克篮球鞋\"
                ]
            },
            \"content_op\": \"查看\"
        }
    ]
}

大家先用以前文章内容中讲解的自主研发 《Python 完成 JSON、字典数据结构的递归解析》 代码,解析以上 JSON对象,解析结论如下所示:

1  JsonPath:code   Value:200 
2  JsonPath:desc.info   Value:表明 
3  JsonPath:desc.update   Value:2021年3月6日 
4  JsonPath:data[0].apps.app_op_seq[0].action   Value:点一下 
5  JsonPath:data[0].apps.app_op_seq[0].module_name   Value:淘宝聚划算 
6  JsonPath:data[0].apps.app_op_seq[0].module_type   Value:resource 
7  JsonPath:data[0].content.des.company_name   Value:NIKE 
8  JsonPath:data[0].content.des.intent[0]   Value:full 
9  JsonPath:data[0].content.rel[0].des.person_name   Value:皇甫玖林 
10  JsonPath:data[0].content.rel[0].des.political_status   Value:王牌vip会员 
11  JsonPath:data[0].content.rel[0].ont[0].name   Value:Person 
12  JsonPath:data[0].content.rel[0].ont[0].id   Value:1 
13  JsonPath:data[0].content.rel[0].ont[1].name   Value:Company 
14  JsonPath:data[0].content.rel[0].ont[1].id   Value:2 
15  JsonPath:data[0].content.rel[0].ont[2].name   Value:Car 
16  JsonPath:data[0].content.rel[0].ont[2].id   Value:3 
17  JsonPath:data[0].content.rel[0].relIdx[0]   Value:0 
18  JsonPath:data[0].content.rel[0].relIdx[1]   Value:8-9 
19  JsonPath:data[0].content.rel[0].relName   Value:皇甫 
20  JsonPath:data[0].content.rel[0].segs[0]   Value:耐克篮球鞋 
21  JsonPath:data[0].content.segs[0]   Value:耐克篮球鞋 
22  JsonPath:data[0].content_op   Value:查看 

Process finished with exit code 0

Demo1 查询某一key的值

import jmespath

result = jmespath.search(\"code\",test_json)
print(result)

# 实行以上代码,导出结论如下所示:
200

Demo2 等级查看某一key的值

import jmespath

result = jmespath.search(\"desc.info\",test_json)
print(result)

# 实行以上代码,导出结论如下所示:
表明

Demo3 根据数据库索引查看Json中List 原素

import jmespath

result = jmespath.search(\"data[0]\",test_json)
print(result)

# 实行以上代码,导出结论如下所示:
{\'apps\': {\'app_op_seq\': [{\'action\': \'点一下\', \'module_name\': \'淘宝聚划算\', \'module_type\': \'resource\'}]}, \'content\': {\'des\': {\'company_name\': \'NIKE\', \'intent\': [\'full\']}, \'rel\': [{\'des\': {\'person_name\': \'皇甫玖林\', \'political_status\': \'王牌vip会员\'}, \'ont\': [{\'name\': \'Person\', \'id\': 1}, {\'name\': \'Company\', \'id\': 2}, {\'name\': \'Car\', \'id\': 3}], \'relIdx\': [0, \'8-9\'], \'relName\': \'皇甫\', \'segs\': [\'耐克篮球鞋\']}], \'segs\': [\'耐克篮球鞋\']}, \'content_op\': \'查看\'}

Demo4 繁杂等级查看某一key的值

import jmespath

result = jmespath.search(\"data[0].apps.app_op_seq[0].action\",test_json)
print(result)

# 实行以上代码,导出结论如下所示:
点一下

根据以上查找方法,大家基本上也可以看得出,在取目录值时要的 “[]”,取字典值时用的 “.”,来表明途径等级 。

Demo5 对Json中List开展切成片查看

import jmespath
# 获得relIdx下第0、1个原素 
result = jmespath.search(\"data[0].content.rel[0].relIdx[0:2]\",test_json)
print(result)

# 获得relIdx下所有原素 relIdx[*]
result1 = jmespath.search(\"data[0].content.rel[0].relIdx[*]\",test_json)
print(result1)

# 实行以上代码,导出结论如下所示:
[0, \'8-9\']
[0, \'8-9\']

Demo6 别的使用方法

import jmespath
# 大批量获得Json中List的字典原素的某一Key的值
result = jmespath.search(\"data[0].content.rel[0].ont[0:3].name\",test_json)
print(result)

# 大批量获得Json中List的字典原素的好几个Key的值
result1 = jmespath.search(\"data[0].content.rel[0].ont[0:3].[name,id]\",test_json)
print(result2)


# 实行以上代码,导出结论如下所示:
[\'Person\', \'Company\', \'Car\']
[[\'Person\', 1], [\'Company\', 2], [\'Car\', 3]]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月13日 下午1:18
下一篇 2022年5月13日 下午1:19

相关推荐

  • 什么软件可以看电视频道,四大直播软件推荐

    双十一结束后,如何使用智能电视已然成为了大家最为关注的问题,我们都知道买电视的首要功能肯定就是看电视节目,这就涉及到第三方软件的选择以及安装的问题。下面当贝市场小编为大家推荐三款非常实用的电视软件,可直接收到各种电视节目视频。 第一款:爱奇艺TV版 爱奇艺在TV端创建了银河奇异果,银河奇异果集成了中国领先视频网站爱奇艺中所有高清正版视频内容。画面清晰、播放流畅、界面友好!近期热门的电影、电视剧、综…

    2022年7月27日
    710
  • 新款游戏笔记本有哪些,2019最强游戏笔记本推荐

    随着科技的发展,电子产品更新换代的速度也是越来越快了,无论是手机还是电脑,一款又一款新产品刷新着人们对于新科技的认知。对于游戏本来说,每一次的进化都能带来新的技术革命和性能飞跃,所以“选新不选旧”就是最好的方案。最近恰逢英特尔和英伟达双双发布新品硬件,小编今天就来推荐几款全新的游戏本产品,希望大家都能挑到自己喜欢的。 推荐一:机械师T90Plus-TB3游戏笔记本电脑京东自营店秒杀价7199元&g…

    2022年5月23日
    640
  • 用户生命周期价值是什么,客户生命周期各阶段的特点

    很多人都听说过“用户生命周期”这个词,遗憾的是超过80%的人仅仅停留在其表层,对其背后的操作逻辑,仍是模棱两可。今天我们就来聊一聊“用户生命周期”背后的操作逻辑,在聊这个话题之前,我们需要先从用户运营开始说起。 那什么又是用户运营? 纵观整个运营界,对用户运营的定义参差不齐,用户运营其实就是如何提升和管理用户价值,这里的用户价值包括:活跃度、留存率、付费用户数、ARPU值等等。 大规模用户运营体系…

    2022年6月12日
    680
  • 创业好项目有哪些,市场上没人注意的四大暴利生意

    目前情况下,创业者对于创业项目的选择确实要慎之又慎,现在一些看似高大上的项目,其实有很多都是坑。在市场上反而有一些看不起眼的小生意项目,但利润却很高。我这里给大家推荐几个这样的小项目,仅供市场调研参考。 流动冷饮车 夏天即将到来,投资一个流动冷饮车就是一个非常不错的创业小项目。这个小项目无需投资者有专业技能,没有文化水平也可以做,几分钟就能熟练操作相关设备。流动冷饮车减免了门店租金的费用,大大提升…

    2022年8月12日
    810
  • 中邮创业基金管理股份有限公司简介,盘点其公司发展历程

    关于增加大连网金基金销售有限公司、 上海挖财基金销售有限公司为代销机构的公告 根据中邮创业基金管理股份有限公司(以下简称“本公司”)与大连网金基金销售有限公司、上海挖财基金销售有限公司签署的代销协议, 自2018年9月21日起,大连网金基金销售有限公司、上海挖财基金销售有限公司开始代理销售中邮核心优选混合型证券投资基金(590001)、中邮核心成长混合型证券投资基金(590002)、中邮核心优势灵…

    2022年5月21日
    820
  • 蓝牙无线技术有什么特点,简述蓝牙技术的原理及优缺点

    蓝牙已经是我们现在数码设备的一个必备模块,是一个近距离的无线的通信规范。蓝牙技术是爱立信的一个工程师发明的,发明蓝牙技术的技术人员需要一个有逼格高大上的名字,于是乎一个有文化的查询古籍找到一个名字叫Harold Bluetooth的丹麦国王,他堪比中国的秦始皇,统一丹麦的所有部落,和蓝牙的设计初衷正好一致,希望它可以统一不同设备的无线交流。 蓝牙的设计初衷是替代RS232电缆连接计算机外设,现在已…

    2022年7月22日
    2660
  • 2020现在什么买卖比较好做(适合年轻人做的生意有哪些)

    在绝大多数人看来,在当前的就业环境下,挣钱这个概念几乎就等同于打工了,毕竟打工来钱更直接,不需要什么成本,也没有什么风险。 相比之下,人人都说创业做生意可以赚大钱,但是真正着手做的没有几个,原因无外乎是没钱、没想法、不敢冒风险等等。 这么多人对创业做生意望而却步,难道创业真的有人们想象中的那么难吗?其实不然! 这些年我国的消费水平在不断提升,各种消费需求也呈现多元化的发展,越来越多的需求随着生活水…

    2022年7月19日
    620
  • 何为人工智能,简述人工智能的发展前景

    具有执行感知功能(例如感知,学习,推理和解决问题)的能力的机器被认为拥有人工智能。当机器具有认知能力时,就会存在人工智能。判断AI的基准是涉及推理、语音和视觉是否接近或达到人类水平。 一、入门人工智能 弱AI(NarrowAI):当机器可以比人类更好地执行特定任务时。 通用AI(GeneralAI):人工智能可以以与人类相同的精度水平执行任何智力任务时达到通用状态。 强AI(StrongAI):当…

    2022年10月14日
    960
  • 有哪些创业项目赚钱,2020年15个创业赚钱好项目

    现代年轻人压力大,不仅生活压力大,就业压力更大!下面小编整理了最新适合年轻人的不起眼小本创业项目,欢迎参考借鉴! 1、托管小课堂 随着时代不断变化,现代的父母承受越来越多的经济压力,用于照料和教育孩子的时间明显不足;加上社会安全形势日趋复杂,车辆的增多和治安的恶化使得家长不放心让孩子独自在家,因此催生了学校家庭之外的孩子的第三归宿——托管小课堂,它可以有效解决双职工家庭孩子放学后无人接管的现象。服…

    2022年6月10日
    830
  • 布鲁克林啤酒怎么样(带你了解布鲁克林啤酒原产国)

    一百年前,布鲁克林有不下48家酿酒厂,但各家酿造厂被迫与工业型酒厂竞争。1976年,这个地区最后一家酿酒厂倒闭。 1984年,史蒂夫·辛迪从中东回来,他决定要创建一家啤酒酿造厂,把“真正的啤酒”带回布鲁克林,从此精酿啤酒革命的序幕缓缓拉开。 精酿浪潮翻涌澎湃,布鲁克林为了从纽约走向世界,聘请了备受尊重的酿酒大师加勒特·奥利弗(GarrettOliver)。 而他的加入,成为极具意义的转折点:在加勒…

    2022年10月21日
    610

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信