Python处理Json报文

原创 2015年11月18日 16:36:27

                                                                     使用Python内置类处理Json格式报文


前言:Json作为更加出色的数据格式,已经越来越广泛应用于各种领域,金融银行体系也不例外,但是金融底层语言多采用python语言,在工作第一次接触新互联网核心json格式的报文,在了解学习后将内容整理出来,供大家参考,有部分内容引用自网络,如有侵权,请告知。

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#Java、JavaScript、PerlPython等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

Python2.6开始加入了JSON模块,无需另外下载,Python的Json模块序列化与反序列化的过程分别是 encoding和 decoding,我们可以通过im

port的方式直接调用JSON模块的功能,其中主要包括编码与解码部分:
encoding:把一个Python对象编码转换成Json字符串
decoding:把Json格式字符串解码转换成Python对象
对于简单数据类型(string、unicode、int、float、list、tuple、dict),可以直接处理。

一、将python类型编码为json,json.dumps()

代码如下:

import json;

dict = {"acnotp": '01','passwd': '223','acctno': '0101', 'redentialno': 10.1,  'credentialtype': ['1','2']};
print "Python:",repr(dict);

jsonstr = json.dumps(dict);
print "Json:",jsonstr;


结果:

Python: {'passwd': '223', 'redentialno': 10.1, 'acctno': '0101', 'credentialtype': ['1', '2'], 'acnotp': '01'}
Json: {"passwd": "223", "redentialno": 10.1, "acctno": "0101", "credentialtype": ["1", "2"], "acnotp": "01"}


编码后的json是utf-8编码,对比可以看出细微的差别,以及元素类型的转换,具体细节可以在实际应用中尝试


二、将json类型解码为python,json.loads()


代码如下:

import json;

dict = {"acnotp": '01','passwd': '223','acctno': '0101', 'redentialno': 10.1,  'credentialtype': ['1','2']};
print "Python:",repr(dict);

jsonstr = json.dumps(dict);
print "Json:",jsonstr;

json_python = json.loads(jsonstr);
print "Josn to Python:",json_python;

结果:

Python: {'passwd': '223', 'redentialno': 10.1, 'acctno': '0101', 'credentialtype': ['1', '2'], 'acnotp': '01'}
Json: {"passwd": "223", "redentialno": 10.1, "acctno": "0101", "credentialtype": ["1", "2"], "acnotp": "01"}
Josn to Python: {u'passwd': u'223', u'redentialno': 10.1, u'acctno': u'0101', u'credentialtype': [u'1', u'2'], u'acnotp': u'01'}


json.loads函数解码后会将原来的utf-8编码转为Unicode,u就是Unicode编码,如需转成其他格式,可以通过encode("gbk")或其他所需编码转换。


这里就简单介绍最基本也是应用最广泛的这两个方法,其他复杂方法和用法待后续深入了解后再更新。






版权声明:本文为博主原创文章,未经博主允许不得转载。

POI解析Excel【poi的坑——空行处理】

// 遍历行 Row row = null; int rowCnt = 0; while((row = sheet.getRow...

python解析与组装json

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - Decembe...

Java一次性递归解析json报文为Map(不使用第三方jar包)

前言json报文相信大家都接触过,对于前段JavaScript来说,它是最方便处理的数据格式,而对于后端应用来说,解析json报文并没有xml格式来的那么清晰明了,尤其是对于通用的处理来说很难做到,这...
  • Roy_70
  • Roy_70
  • 2017年05月15日 22:45
  • 1415

压力测试工具 jmeter 使用发送json报文

转:http://blog.csdn.net/oufua/article/details/48006631 启动Jmeter:找到Jmeter.bat文件双击启动Jmeter。 ...

压力测试工具 jmeter 使用发送json报文

启动Jmeter:找到Jmeter.bat文件双击启动Jmeter。 2 在测试计划下面添加线程组:测试计划右键 —— 添加  —— ...
  • oufua
  • oufua
  • 2015年08月26日 17:29
  • 2864

有关json和xml报文的解析和构造

对xml的解析 一、获取document SAXReader reader = new SAXRader(); Document document = reader.read(n...

用python进行DNS查询--(报文解析篇)

#-*-coding:utf-8-*- import socket def ana_head(q,n): list1 = [] print u'包长度%d'%len(q) pr...

Python实现——CAN报文转换工具

一.CAN报文简介 CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 1...

python发送http multipart报文并和php交互

1.拼http报文是比较麻烦的事(python脚本) 虽然有可能报错 但我需要优雅地处理出错,这里我开了多个线程来同时请求加快响应速度 # -*- coding: utf-8 -*- import s...
  • ddjohn
  • ddjohn
  • 2015年12月09日 19:50
  • 1093
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python处理Json报文
举报原因:
原因补充:

(最多只允许输入30个字)