一 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'。

图1 原始文件
  • 解析

MATLAB本身无直接解析json数据的函数,我从MATLAB官网论坛File Exchange上找到两个解析json的第三方函数:json4mat和parse_json。这两个函数均能成功解析json格式数据到MATLAB支持的cell和struct类型数据。

下载地址:http://cn.mathworks.com/matlabcentral/fileexchange/?search_submit=fileexchange&query=json&term=json
发现json4mat比parse_json的解析速度更快。
  • 示例

以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函数
  • 结果
解析后得到的16*4的cell格式数据,里面每个元素是结构体struct数据。每个结构体有两个字段:series和id。可供MATLAB进行处理。
图2 解析后的数据

图3 struct结构
参考文献: 
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143192607210600a668b5112e4a979dd20e4661cc9c97000

图1 原始文件
  • 解析

MATLAB本身无直接解析json数据的函数,我从MATLAB官网论坛File Exchange上找到两个解析json的第三方函数:json4mat和parse_json。这两个函数均能成功解析json格式数据到MATLAB支持的cell和struct类型数据。

下载地址:http://cn.mathworks.com/matlabcentral/fileexchange/?search_submit=fileexchange&query=json&term=json
发现json4mat比parse_json的解析速度更快。
  • 示例

以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函数
  • 结果
解析后得到的16*4的cell格式数据,里面每个元素是结构体struct数据。每个结构体有两个字段:series和id。可供MATLAB进行处理。
图2 解析后的数据

图3 struct结构
参考文献: 
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143192607210600a668b5112e4a979dd20e4661cc9c97000

因为项目需要,公司领导对提出了接口测试的要求,因此作为一个测试人员,我第一时间就想到了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格式数据相关推荐

  1. las文件matlab,基于Matlab的LAS格式数据解析与显示.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab 基于Matlab的LAS格式数据解析与显示.pdf ...

  2. matlab segy文件,利用matlab实现segy格式数据的读写研究和分析.ppt

    利用matlab实现segy格式数据的读写研究和分析 2.SEGY数据格式 地震数据一般以地震道为单位进行组织,采用SEG-Y文件格式存储.SEG-Y格式是由SEG (Society of Explo ...

  3. 怎么将计算机的数据都备份到网络设置,如何备份电脑所有数据?三大方法教你搞定电脑数据备份...

    原标题:如何备份电脑所有数据?三大方法教你搞定电脑数据备份 现在生活中,大家基本上都离不开电脑及手机了,而且电脑或手机上,会存储一些重要的数据.那这些数据要是丢失的话,给我们带来的损失是无法估计的.那 ...

  4. 怎么将计算机里的所有信息备份到移动硬盘,如何备份电脑所有数据?三大方法教你搞定电脑数据备份...

    原标题:如何备份电脑所有数据?三大方法教你搞定电脑数据备份 现在生活中,大家基本上都离不开电脑及手机了,而且电脑或手机上,会存储一些重要的数据.那这些数据要是丢失的话,给我们带来的损失是无法估计的.那 ...

  5. 关于python使用pandas导入dat数据文件的方法(可导入任意dat数据文件和csv数据文件)

    我相信大家在学习python中会遇到一些很苦恼的数据导入问题,csdn上面的数据导入五花八门,大多是在特定条件实行的数据导入,我在学习机器学习分类算法实现中发现csdn上面有很多dat数据文件,所以想 ...

  6. matlab读取.mb15格式数据,两分钟搞定Python读取matlab的.mat数据

    Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能.在Matlab中数据集通常保存为.mat格式.那么如果我们想要在Python中加载.mat数据应该怎么办呢?所 ...

  7. 解析JSON字串的方法有eval,json_parse,JSON.parse

    解析JSON字串的方法有 (1)var vjson = eval(jsonstr); 缺点:不安全,有可能jsonstr中有恶意脚本,那就麻烦了. (2)var vjson = json_parse( ...

  8. Web前端工作笔记002---json数据查询的方法_json查询大全,JsonSQL数据查询,jfunk数据查询

    JAVA技术交流QQ群:170933152 json数据查询的方法 网上看到有一篇帖子,有8种json数据查询的方法,大家可以研究一下,我现在分享一下! JsonSQL JsonSQL实现了使用SQL ...

  9. php获取显示图书数据,php基于dom实现读取图书xml格式数据的方法

    本文实例讲述了php基于dom实现读取图书xml格式数据的方法.分享给大家供大家参考,具体如下: $doc = new DOMDocument(); $doc->load( 'books.xml ...

最新文章

  1. OpenCV 【三】————contours便利删除操作方法
  2. python27安装-linux下安装python27 nginx 和uwsgi
  3. 事业单位招 计算机面试实践技能操作,2019山东事业单位卫生类招聘面试实践技能概论...
  4. L1,L2正则化分析
  5. billibilli html5播放,Thousands of people online are involved in ef...
  6. 显示二维数组并计算和
  7. ---------愿 青春与我皆不付---------------------
  8. javascript时间差工具包
  9. [转][Err] 1452 - Cannot add or update a child row: a foreign key constraint fail
  10. 用户服务协议和隐私政策
  11. W3school笔记——HTML
  12. java西游记3_西游记之大战火焰山
  13. 写给Python程序员的PHP快速入门教程
  14. CTFshou wed命令执行29~50
  15. 帝国cms支付系统的漏单风险
  16. Linux攻关之基础模块七 命令总结
  17. linux镜像包含redis吗,Linux虚拟机镜像\redis安装
  18. java类和对象在内存的表现形式
  19. IOS加密技术之——3DES加密解密技术(记录)
  20. C++ 内存泄漏调试

热门文章

  1. 学Java需要数学好吗?数学基础差就不能学Java吗?
  2. 点云PCD和PLY区别
  3. ncl如何添加线shp文件_NCL画图个例讲解.pdf
  4. 固态硬盘在线测试软件,ssd测试软件,详细教您ssd测试软件
  5. CGroup(控制组)
  6. C# 语音端点检测(VAD)实现过程分析
  7. k8s主从自动切换mysql_K8S与Ceph RBD集成-多主与主从数据库示例
  8. libxml2的安装和使用
  9. Linux-tar打包与解压命令
  10. 嵌入式软件之裸板与驱动调试