python提取用友数据_Python对json数据的提取

本文介绍了为何选择JSON作为数据交换格式,并通过一个例子展示了如何使用Python的json.loads()函数从JSON数据中提取特定指标,如InstanceId。通过解析JSON数据,可以方便地从监控数据中获取所需信息。
摘要由CSDN通过智能技术生成

JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。

1,为什么要研究json数据的提取呢?

是因为zabbix监控取数据的时候,很多都是要处理json中的某个指标数据的。例如我要从一大串的json数据中,取某个指标数据,怎么取呢?下面举个例子:

json数据:{'TotalCount': 1, 'InstanceSet': [{'Placement': {'Zone': 'ap-guangzhou-4', 'ProjectId': 0, 'HostIds': None, 'HostIps': None, 'HostId': None}, 'InstanceId': 'ins-6h6p3k6e', 'InstanceTy

pe': 'S5.SMALL2', 'CPU': 1, 'Memory': 2, 'RestrictState': 'NORMAL', 'InstanceName': '未命名', 'InstanceChargeType': 'PREPAID', 'SystemDisk': {'DiskType': 'CLOUD_PREMIUM', 'DiskId': 'd

isk-h5o7wnf0', 'DiskSize': 50}, 'DataDisks': None, 'PrivateIpAddresses': ['172.16.0.12'], 'PublicIpAddresses': ['134.175.228.48'], 'InternetAccessible': {'InternetChargeType': 'BANDWI

DTH_PREPAID', 'InternetMaxBandwidthOut': 1, 'PublicIpAssigned': None, 'BandwidthPackageId': None}, 'VirtualPrivateCloud': {'VpcId': 'vpc-mk4mrt4b', 'SubnetId': 'subnet-py2q6cqc', 'AsV

pcGateway': False, 'PrivateIpAddresses': None, 'Ipv6AddressCount': None}, 'ImageId': 'img-oikl1tzv', 'RenewFlag': 'NOTIFY_AND_MANUAL_RENEW', 'CreatedTime': '2020-12-25T08:55:24Z', 'Ex

piredTime': '2021-01-25T08:55:24Z', 'OsName': 'CentOS 7.5 64位', 'SecurityGroupIds': ['sg-r8l8s8ef'], 'LoginSettings': {'Password': None, 'KeyIds': ['skey-oa700dq3'], 'KeepImageLogin'

: None}, 'InstanceState': 'RUNNING', 'Tags': [], 'StopChargingMode': 'NOT_APPLICABLE', 'Uuid': 'c1c29e0f-388a-429e-af28-35d836495e38', 'LatestOperation': 'ResetInstancesPassword', 'La

testOperationState': 'SUCCESS', 'LatestOperationRequestId': 'bc0bafe1-0c8f-4be5-9ddf-8933f4f3d8ed', 'DisasterRecoverGroupId': '', 'IPv6Addresses': None, 'CamRoleName': '', 'HpcCluster

Id': '', 'RdmaIpAddresses': None}], 'RequestId': '9a97237b-a614-4ef9-9f50-18190911c120'}

看图吧:

f1c40be7a79fc03067922fe71f10b655.png

2,取某个数据,用json.loads

json.loads 用于解码 JSON 数据,json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典),res就是上面那串json数据了。观察json数据结构,InstanceId包含在元数组InstanceSet里面,然后json.load(res)将数据转化为字典,选取InstanceSet元数组里面的数据,之后直接选取InstanceId对象,就可以得出该对象的数值了。如下图:

ec937fb482ab7c48855dfff0fe22d941.png

e5aa45e21ab3dbaf6e51f9eb03b4397f.png

打印结果:

4cdca6ae698243e7bb6f17aa77386d3e.png

其它的原理不细说了,自己百度python json比我说的好,然后自己尝试获取其它的数据就知道怎么用了。我就用它实现了一些功能。如下图,想要什么值就可以打印出它的值。

1c01dbd51e777d01fdc0bdd88fe8df31.png

技术交流欢迎加入Q群:177428068

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值