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

相关推荐

  • 空气净化风扇哪个牌子好用( 选择戴森风扇的四大理由)

    戴森的产品似乎有一种魔力,或许仅仅看了一眼就会爱上它,而它们不仅拥有科技范儿的外观设计,还总是带来独特又让人心动的使用体验,比如PureHot+Cool™空气净化暖风扇,从名字可以看出,这是一台全年可用的空气净化冷暖风扇,它把电风扇、空气净化器、电暖气的功能都整合在了一起,是否值得为它超过五千的价格买单呢? 经典的无扇叶设计增加了一块屏幕 戴森HP04依然是经典的无扇叶设计,从颜值上直接就与普通的…

    2022年9月12日
    2510
  • 电视促销广告能信吗,小米彩电618促销价格

    6月10日讯,京东商城在今天开启了“家电主推日,疯抢48小时”的折扣活动。活动期间,多个品牌智能电视迎来历史最低价,还可以享受最高24期白条免息,可谓相当实惠。 电视,无疑是人们家居生活中不可或缺的重要家具。科技日新月异,智能家居的概念开始逐渐普及,传统电视的地位也渐渐被智能电视所取代。智能电视只要能够连接上网络就可以观看节目,还可以充当家庭智能家居的中控中心,可以说是满足客厅娱乐需求的第一选择。…

    2022年8月25日
    530
  • 照片修图软件有哪些(手机修图软件大全)

    好照片,是拍出来的,也是修出来的。 要说手机好用的后期APP,有很多。 但是真正用得顺手,且使用频率又高的,就不多了。 我手机里必备常用的后期APP有哪些? 今天就来给大家分享一下。 上周五,北京电视台播出的《光影新视界》栏目中,我在玩转手机的版块里,就给大家分享了几款我的私藏APP。 这些APP记得分享给大家也有几年了,这次回看,貌似也没有变化。 就此可以看出,这几款APP的经典,以及耐用、好用…

    2022年5月10日
    830
  • iphone删除照片怎么恢复,方法很简单不会的朋友赶紧过来看看

    大家都知道,iPhone的存储空间是有限的,而我们每天都在拍摄越来越多的照片,因此往往会遇到手机存储空间满的时候。这时候最有效的办法就是删除那些没有保存意义的照片。还有,知道陈老师的故事的同学都明白,有时候手机里面有一些必须要删除的照片,否则后果不堪设想。然而,有一些小伙伴可能并不知道,当你删除iPhone照片之后,并没有真正删除它。 进入iPhone的照片应用,点击相簿菜单,将会发现“最近删除”…

    2022年7月24日
    580
  • 微信营销软件排行榜,微商必备十大软件盘点

    现在工作手机非常火热,一提到工作手机,人们下意识想到的就是监管。诚然,在绝大多数应用场景下,使用工作手机,就意味着一切轨迹都被纳入到监管范围当中。也正是基于此,工作手机被认为是解决信任、保护客户资源的销售工具。 但实际上,工作手机的应用场景,远不止于此。红鹰微信营销管理软件,大大强化了协同交互的功能。在销售应用场景搭建上,红鹰微信营销管理软件基于销售协作困难的痛点持续发力,率先在工作手机领域实现突…

    2022年8月8日
    650
  • seo内部优化基本步骤, seo优化的10个小技巧

    SEO优化其实是网站优化的一部分,无论是网站内部优化,还是站外优化,都包含其中,从而提高搜索引擎上的排名,起到直接销售或者企业品牌推广的作用,保障企业通过线上服务获得足够的利润。 接下来,跟随帝佑科技小编我们一起来了解一下SEO优化的步骤是怎样的吧,并不是简单的几个小建议,而是技术和脑力的结合体,需要很大的精力才能够全部了解清楚。 1、关键词分析(也叫关键词定位) 这是进行SEO最重要的一环,关键…

    2022年9月17日
    470
  • 威客网络兼职真的能赚钱吗,教你月入5000的能力

    读完这篇文章,将教你月入5000千的能力,想赚钱很简单,靠双手去劳动就可以。随便的打份工,每月有那么几千块钱的工资。如果你是不甘于平庸,想翻盘只能靠弯道超车。 而想赚更多的钱,讲的是利益交换,动的一定是脑子。当你的思维被局限在一个层次时,你只能靠自己的琢磨,会走不出那个层次。 或许人各有志吧,每一个人的路都不同。 以猪八戒网为例,只要方案中标,平台收取20%的手续费,其他的钱都是你的。 可以发现在…

    2022年9月12日
    560
  • 10万左右的车买哪款好,十万落地最热销十款车

    往前推10年,往后推10年,中间的2020年春节可能是大家宅在家时间最长的春节,同时“不聚集、不聚会、不出游”,“不聚集不添乱就是最大贡献”等口号也在朋友圈里疯传,不出门已经成为了疫情期间的主流,往常人满为患的地铁公交也在春节和疫情的共同作用下变得“空无一人”。但随着企业复工,普通人还得继续为生活奔波,可以预见以往人流密集的公共交通场所依然会人满为患,这时候如果能拥有属于自己的一台车是多么幸福的一…

    2022年8月12日
    590
  • 怎样做微信营销,微信销售技巧和话术

    好的分享一定是有针对性的分享,因为我不太清楚大家的需求,所以我做单一的分享效果不一定好。比如我在这里大谈如何做帐号推广,万一群里很多朋友微信公众帐号后台都没有接触过。。。那我就算是讲的再好,也是白搭。所以还是大家直接提问,我懂得做一一解答,不懂得大家可以探讨交流。 1.如何解决掉粉问题 微信帐号分两种,服务号和订阅号。服务号只要解决一个问题就能解决掉粉问题:绑定用户并服务好用户。怎么绑定和服务呢?…

    2022年8月14日
    580
  • vmware是一款什么软件(vmware服务器虚拟化)

    从1998年诞生至2021年,年仅二十有余的VMware,正在完成其人生中的第三次进化。VMware首席执行官Raghu Raghuram表示:“起步之初,VMware致力于交付最佳的虚拟化解决方案;7年前,VMware已经由服务器虚拟化,进入私有云、软件定义数据中心,以及应用现代化的时代。”目前,VMware开启了发展的第三篇章,致力于成为多云和应用的领导者。   而一次次的跨越和蝶变已经成为V…

    2022年5月12日
    1250

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信