【Python使用】Python解析JSON数据的基本方法/用MATLAB解析json格式数据
一 JSON数据格式介绍
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
JSON建构于两种结构:json是Javascript中的对象和数组中的对象,本质上来讲就是有特定结构的字符串,所以可以通过这两种结构可以表示各种复杂的结构:
1 对象: 对象在js中表示为”{}”括起来的内容,数据结构为{key:value, key:value…}的键值对结构,在面向对象的语言中,key为对象的属性,value为对应属性的值,所以很容易去理解。属性值value可以为:数字、字符串、数组、对象等。
2 数组:数组在js中是中括号“[]”括起来的内容,数据结构为[“java”, “javascript”, “vb”….] 取值方式和所有语言一样,使用索引获取,字段值的类型是:数字、字符串、数组、对象等
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是 JavaScript 很容易解释它,而且 JSON 可以表示比”名称 / 值对”更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
按照最简单的形式,可以用下面这样的 JSON 表示 “名称 / 值对” :{ “firstName”: “Brett” }
当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。
如:
{
"people":[
{"firstName": "111", ....},
{"firstName": "222",...},
{"firstName": "333",...}
]}
二 Python处理JSON数据
Python的json模块提供了一种很简单的方式来编码和解码JSON数据。 其中两个主要的函数是 json.dumps() 和 json.loads()
import json
data={"name":"sunxiaomin","sex":"男","年龄":"26"}
#将python字典类型变成json数据格式
json_str=json.dumps(data)
print(json_str)
print(type(json_str))
#将JSON数据解码为dict(字典)
data1=json.loads(json_str)
print(data1)
print(type(data1))
输出结果:
{"name": "sunxiaomin", "sex": "\u7537", "\u5e74\u9f84": "26"}
<class 'str'>
{'name': 'sunxiaomin', 'sex': '男', '年龄': '26'}
<class 'dict'>
函数详解
使用 JSON 函数需要导入 json 库:import json。
函数 描述
json.dumps 将 Python 对象编码成 JSON 字符串
json.loads 将已编码的 JSON 字符串解码为 Python 对象
json.dumps
json.dumps 用于将 Python 对象编码成 JSON 字符串。
语法
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
1) skipkeys:布尔型,默认为False,如果设为True的话,在dict中的key值如果出现非 (str, unicode, int, long, float, bool, None)对象,则跳过该key而不是抛出 ValueError。
2) indent:非负整数,表示编码后的字符串的缩进方式,默认为None表示无缩进,一般设为4,如果设为0则只会添加换行符。
indent参数根据数据格式缩进显示,读起来更加清晰, indent的值,代表缩进空格式:
3) separators:元组,默认为None,如果设置的话,一般设为(’,’,’:’),表示把’,’和‘:’后面的空格去掉,用来精简输出字符串。
separators参数的作用是去掉‘,’ ‘:’后面的空格,在传输数据的过程中,越精简越好,冗余的东西全部去掉。
4) sort_keys: 布尔型,默认为False,如果设为True,则输出的dict会按照key值排序。
sort_keys是告诉编码器按照字典key排序(a到z)输出
5) 输出真正的中文需要指定ensure_ascii=False
如果无任何配置,或者说使用默认配置,
输出的会是‘凉凉’的ASCII字符吗,而不是真正的中文。
这是因为json.dumps 序列化时对中文默认使用的ascii编码。
json.loads 语法
json.loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
用MATLAB解析json格式数据
由于需要读取服务器中json的数据,倒腾了很久,终于ok了。我的环境是:win7+MATLAB R2014a,现在分享代码和源文件给大家。
源文件:链接:http://pan.baidu.com/s/1mhKXZRE 密码:gftu;
将下载下来的文件解压后放入当前MATLAB的工作路径,下图中,E:\PIR\PIR_V3.0是我的工作路径,E:\PIR\PIR_V3.0\jsonlab-1.5是下载的文件存放路径;
先附上我的MATLAB代码,很简单的读取当前目录下的Data.json文件;
clear
clc
addpath('E:\PIR\PIR_V3.0\jsonlab-1.5'); %添加下载包的存放路径
fname='Data.json'; %待读取的文件名称
jsonData=loadjson(fname);%jsonData是个struct结构
pirVal=jsonData.u';
运行代码后可看到MATLAB的工作区情况如下图所示,接下来就可以取用json中的数据了;
_______________________________ ----------------------------------------------------------------
- 前言
今天拿到一个传感器信号文件,txt格式,有十几行,每行是一组json格式数据,有两个字段(键):'series'和'id',共4个json对象,id从'901'到'904',其中每组的series是是个数组,数组中包含512个json对象,每个json对象含有两个字段:'time'和'value'。
- 前言
今天拿到一个传感器信号文件,txt格式,有十几行,每行是一组json格式数据,有两个字段(键):'series'和'id',共4个json对象,id从'901'到'904',其中每组的series是是个数组,数组中包含512个json对象,每个json对象含有两个字段:'time'和'value'。
- 解析
MATLAB本身无直接解析json数据的函数,我从MATLAB官网论坛File Exchange上找到两个解析json的第三方函数:json4mat和parse_json。这两个函数均能成功解析json格式数据到MATLAB支持的cell和struct类型数据。
- 示例
以json4mat为例,
3 |
%% 解析
|
4 |
clear;clc;
|
5 |
file = 'C:\Users\Administrator\Desktop\06\zlw\AccData-18-29-43.txt';
|
6 |
A = importdata(file);
|
7 |
M = [];
|
8 |
for i = 1:numel(A)
|
9 |
M=[M;json2mat(A{i})];
|
10 |
end %方法1,json2mat函数
|
11 |
|
12 |
% for i = 1:numel(A)
|
13 |
% tmp = parse_json(A{i});
|
14 |
% M = [M;tmp{1}];
|
15 |
% end %方法2,parse_json函数
|
- 结果
图3 struct结构
- 解析
MATLAB本身无直接解析json数据的函数,我从MATLAB官网论坛File Exchange上找到两个解析json的第三方函数:json4mat和parse_json。这两个函数均能成功解析json格式数据到MATLAB支持的cell和struct类型数据。
- 示例
以json4mat为例,
3 |
%% 解析
|
4 |
clear;clc;
|
5 |
file = 'C:\Users\Administrator\Desktop\06\zlw\AccData-18-29-43.txt';
|
6 |
A = importdata(file);
|
7 |
M = [];
|
8 |
for i = 1:numel(A)
|
9 |
M=[M;json2mat(A{i})];
|
10 |
end %方法1,json2mat函数
|
11 |
|
12 |
% for i = 1:numel(A)
|
13 |
% tmp = parse_json(A{i});
|
14 |
% M = [M;tmp{1}];
|
15 |
% end %方法2,parse_json函数
|
- 结果
图3 struct结构
因为项目需要,公司领导对提出了接口测试的要求,因此作为一个测试人员,我第一时间就想到了jmeter这个利器,前面文章也有说明过怎么用jmeter做http协议的接口测试,这里我不再做讲解,此篇主要讲解如何用python做接口测试,并解析返回结果。
(注意:接口的返回格式是json格式)
一、python如何做接口测试
1.1,引用requests模块,并填写接口参数,如下图所示:
直接执行即可看到结果。
OK至此一个单接口的,用于python语言,需人工查看的接口测试结果的接口手动接口测试我们便完成了,然而这并达不到我主题所需啊,那么继续吧
二、解析接口返回结果
我们先捋一下思路,解析一个接口返回结果我们需要做什么,下面是我的思路
- json模块
- 格式转换
- 取值
2.1,分析接口执行结果,如下图所示:
如上图,怎样才能达到图片中的需求呢?
2.1.1,根据思路散步走,这里直接上代码,如下图所示:
ps:关于json模块,这里不做详细讲解,执行结果如下图所示:
如上图所示,执行后成功拿到了我们所需要的结果。
OK,感觉好完美,感觉到达了高潮,可是还是不像题中所说的复杂json字符串啊,那么我们继续往下
2.2,解析复杂json字符串,此时丢出一复杂字符串(格式被转换成字典了),如下图所示:
PS:如上图提示,以及我现在需要获取参数“balance”值为“ceshi”的“exchanged”的值,这时我们需要怎么做呢?
同样我们先捋一下思路
- json字典
- 格式转换
- 循环
- 取值
2.2.1,这里跟着思路走,直接上代码,如下图所示:
ps:如上图解释,相信大家对复杂字符串的解析有一定的想法了
后续将会出如何将上一个接口的值返回给下一个接口
【Python使用】Python解析JSON数据的基本方法/用MATLAB解析json格式数据相关推荐
- las文件matlab,基于Matlab的LAS格式数据解析与显示.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > matlab 基于Matlab的LAS格式数据解析与显示.pdf ...
- matlab segy文件,利用matlab实现segy格式数据的读写研究和分析.ppt
利用matlab实现segy格式数据的读写研究和分析 2.SEGY数据格式 地震数据一般以地震道为单位进行组织,采用SEG-Y文件格式存储.SEG-Y格式是由SEG (Society of Explo ...
- 怎么将计算机的数据都备份到网络设置,如何备份电脑所有数据?三大方法教你搞定电脑数据备份...
原标题:如何备份电脑所有数据?三大方法教你搞定电脑数据备份 现在生活中,大家基本上都离不开电脑及手机了,而且电脑或手机上,会存储一些重要的数据.那这些数据要是丢失的话,给我们带来的损失是无法估计的.那 ...
- 怎么将计算机里的所有信息备份到移动硬盘,如何备份电脑所有数据?三大方法教你搞定电脑数据备份...
原标题:如何备份电脑所有数据?三大方法教你搞定电脑数据备份 现在生活中,大家基本上都离不开电脑及手机了,而且电脑或手机上,会存储一些重要的数据.那这些数据要是丢失的话,给我们带来的损失是无法估计的.那 ...
- 关于python使用pandas导入dat数据文件的方法(可导入任意dat数据文件和csv数据文件)
我相信大家在学习python中会遇到一些很苦恼的数据导入问题,csdn上面的数据导入五花八门,大多是在特定条件实行的数据导入,我在学习机器学习分类算法实现中发现csdn上面有很多dat数据文件,所以想 ...
- matlab读取.mb15格式数据,两分钟搞定Python读取matlab的.mat数据
Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能.在Matlab中数据集通常保存为.mat格式.那么如果我们想要在Python中加载.mat数据应该怎么办呢?所 ...
- 解析JSON字串的方法有eval,json_parse,JSON.parse
解析JSON字串的方法有 (1)var vjson = eval(jsonstr); 缺点:不安全,有可能jsonstr中有恶意脚本,那就麻烦了. (2)var vjson = json_parse( ...
- Web前端工作笔记002---json数据查询的方法_json查询大全,JsonSQL数据查询,jfunk数据查询
JAVA技术交流QQ群:170933152 json数据查询的方法 网上看到有一篇帖子,有8种json数据查询的方法,大家可以研究一下,我现在分享一下! JsonSQL JsonSQL实现了使用SQL ...
- php获取显示图书数据,php基于dom实现读取图书xml格式数据的方法
本文实例讲述了php基于dom实现读取图书xml格式数据的方法.分享给大家供大家参考,具体如下: $doc = new DOMDocument(); $doc->load( 'books.xml ...
最新文章
- OpenCV 【三】————contours便利删除操作方法
- python27安装-linux下安装python27 nginx 和uwsgi
- 事业单位招 计算机面试实践技能操作,2019山东事业单位卫生类招聘面试实践技能概论...
- L1,L2正则化分析
- billibilli html5播放,Thousands of people online are involved in ef...
- 显示二维数组并计算和
- ---------愿 青春与我皆不付---------------------
- javascript时间差工具包
- [转][Err] 1452 - Cannot add or update a child row: a foreign key constraint fail
- 用户服务协议和隐私政策
- W3school笔记——HTML
- java西游记3_西游记之大战火焰山
- 写给Python程序员的PHP快速入门教程
- CTFshou wed命令执行29~50
- 帝国cms支付系统的漏单风险
- Linux攻关之基础模块七 命令总结
- linux镜像包含redis吗,Linux虚拟机镜像\redis安装
- java类和对象在内存的表现形式
- IOS加密技术之——3DES加密解密技术(记录)
- C++ 内存泄漏调试