Python处理Json报文

来源:互联网 发布:数码宝贝网络侦探特典 编辑:程序博客网 时间:2024/05/16 06:02

                                                                    使用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")或其他所需编码转换。


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






0 0
原创粉丝点击