python ----json数据处理
1、什么是JSON:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。第一次接触到它是在进行服务器端接口测试的时候。现在很多服务器返回的结果都是json格式。主要是由于它比较容易解析和生成。JSON格式的数据本质上一种被格式化了的字符串。
2、Python处理JSON
用Python处理json也很简单,Python自带有json模块。可以对python对象与json字符串进行相互转换。
2.1、编码
json.dumps()把一个Python对象编,码转换成Json字符串。
举个例子:
>>> import json
>>> python_obj = [[1,2,3],123,123.123,'abc',{'key1':(1,2,3),'key2':(4,5,6)},True,False,None] >>> json_str=json.dumps(python_obj) >>> print json_str [[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}, true, false, null]
- 1
- 2
- 3
- 4
- 5
通过输出的结果可以看出,简单类型的python对象通过encode之后跟其原始的repr()输出结果非常相似,但是有些数据类型进行了改变,例如上例中的元组则转换为了列表,True变成了true,Flase变成了false,None变成了null。也就是说在json的编码过程中,会存在从python原始类型向json类型的转化过程。具体的转化对照如下:
json.dumps方法提供了很多好用的参数可供选择,比较常用的有sort_keys(对dict对象进行排序,我们知道默认dict是无序存放的),skipkeys(对于键不是基本类型Python字典键值对将被过滤),indent(格式化输出用的)等参数。还是举个例子:
>> python_obj2={"key2": [4, 5, 6], "key1": [1, 2, 3]} >>> json_str2=json.dumps(python_obj2) >>> json_str2=json.dumps(python_obj2,sort_keys=True,indent=2) >>> print json_str2 { "key1": [ 1, 2, 3 ], "key2": [ 4, 5, 6 ] } >>> json_str2=json.dumps(python_obj2,sort_keys=False,indent=2) >>> print json_str2 { "key2": [ 4, 5, 6 ], "key1": [ 1, 2, 3 ] }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
sort_keys=True时,压缩过后的json字符串中字典是被排过序的。再加上indent的参数进行适当的缩进,打印此来的json字符串很漂亮。
2.2、解码
json.loads()把Json格式字符串解码,转换成Python对象。
还是举个例子,将上例中编码的json字符串再解码成Python对象:
>>> print json.loads(json_str)
[[1, 2, 3], 123, 123.123, u'abc', {u'key2': [4, 5, 6], u'key1': [1, 2, 3]}, True, False, None]
- 1
- 2
loads方法返回了原始的对象,但是仍然发生了一些数据类型的转化。比如,上例中‘abc’转化为了unicode类型。从json到python的类型转化对照如下:
===========================================================================================================================
如何使用 Python 语言来编码和解码 JSON 对象。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。
JSON 函数
使用 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)
实例
以下实例将数组编码为 JSON 格式数据:
#!/usr/bin/python import jsondata = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] json = json.dumps(data) print json
以上代码执行结果为:
[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]
使用参数让 JSON 数据格式化输出:
>>> import json >>> print json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': ')) { "a": "Runoob", "b": 7 }
python 原始类型向 json 类型的转化对照表:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
json.loads
json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。
语法
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
实例
以下实例展示了Python 如何解码 JSON 对象:
#!/usr/bin/python import jsonjsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; text = json.loads(jsonData) print text
以上代码执行结果为:
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
json 类型转换到 python 的类型对照表:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true | True |
false | False |
null | None |
使用第三方库:Demjson
Demjson 是 python 的第三方模块库,可用于编码和解码 JSON 数据,包含了 JSONLint 的格式化及校验功能。
Github 地址:https://github.com/dmeranda/demjson
官方地址:http://deron.meranda.us/python/demjson/
环境配置
在使用 Demjson 编码或解码 JSON 数据前,我们需要先安装 Demjson 模块。本教程我们会下载 Demjson 并安装:
$ tar -xvzf demjson-2.2.3.tar.gz $ cd demjson-2.2.3 $ python setup.py install
更多安装介绍查看:http://deron.meranda.us/python/demjson/install
JSON 函数
函数 | 描述 |
---|---|
encode | 将 Python 对象编码成 JSON 字符串 |
decode | 将已编码的 JSON 字符串解码为 Python 对象 |
encode
Python encode() 函数用于将 Python 对象编码成 JSON 字符串。
语法
demjson.encode(self, obj, nest_level=0)
实例
以下实例将数组编码为 JSON 格式数据:
#!/usr/bin/python import demjsondata = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] json = demjson.encode(data) print json
以上代码执行结果为:
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
decode
Python 可以使用 demjson.decode() 函数解码 JSON 数据。该函数返回 Python 字段的数据类型。
语法
demjson.decode(self, txt)
实例
以下实例展示了Python 如何解码 JSON 对象:
#!/usr/bin/python import demjsonjson = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; text = demjson.decode(json) print text
以上代码执行结果为:
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
转载于:https://www.cnblogs.com/dpf-learn/p/8011324.html
python ----json数据处理相关推荐
- python接口自动化(十九)--Json 数据处理---实战(详解)
简介 上一篇说了关于json数据处理,是为了断言方便,这篇就带各位小伙伴实战一下.首先捋一下思路,然后根据思路一步一步的去实现和实战,不要一开始就盲目的动手和无头苍蝇一样到处乱撞,撞得头破血流后而放弃 ...
- python基础代码库-Python基础数据处理库-NumPy
最近更新:2017-07-19 NumPy是Python做数据处理的底层库,是高性能科学计算和数据分析的基础,比如著名的Python机器学习库SKlearn就需要NumPy的支持.掌握NumPy的基础 ...
- Python大数据处理库 PySpark实战 总结四
Python大数据处理库 PySpark实战四 ETL 实战 实验数据来源 数据加载 观察资料 选择.筛选与聚合 机器学习实战 实验数据来源 数据加载 统计描述 清洗与变形 Pipeline 逻辑回归 ...
- Python爬虫-数据处理与存储
Python爬虫-数据处理与存储 数据处理 可以使用pandas模块来实现数据处理,pandas是一个开源的并且通过BSD许可的库.它主要为Python语言提供高性能.易于使用数据结构和数据分析工 ...
- python json数据的文件读写操作
python json数据的文件操作 代码 read_write_json.py #!/usr/bin/env python # -*- encoding: utf-8 -*- "" ...
- python json数据格式数组内元素递增赋值_python深浅复制,类型转换, json操作,数组操作...
python深浅复制 import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷 ...
- python json dumps 自定义_Python json.dumps 自定义序列化操作
def login_ajax(request): if request.method == "GET": return render(request, 'login_ajax.ht ...
- python json模块的内部实现_python – 如何使用JSON模块进行漂亮打印时实现自定义缩进?...
所以我使用Python 2.7,使用json模块编码以下数据结构: 'layer1': { 'layer2': { 'layer3_1': [ long_list_of_stuff ], 'layer ...
- python JSON ValueError: Expecting property name: line 1 column 2 (char 1)
python JSON ValueError: Expecting property name: line 1 column 2 (char 1) 使用json.loads,解析以下数据为json格式 ...
- python json数据的转换
1 Python数据转json字符串 import json json_str = json.dumps(py_data) 参数解析: json_str = json.dumps(py_data,s ...
最新文章
- apache httpd server安装的一个问题
- opencv机器学习线性回归_机器学习入门1---简单线性回归
- go语言笔记——调试还很弱,用gdb来做?可用panic和defer。格式化代码使用gofmt,貌似我的vim插件是自带...
- tp5循环查询语句_tp5 foreach 套循环的优化(就是foreach 里边再查表)
- Windows Server 2008 如何在IIS中添加MIME类型
- idea查询类_Spring Security入门(三): 基于自定义数据库查询的认证实战
- [前台]---js中方法的强制返回和java中方法的强制返回
- linux fb设备驱动,Linux FB 驱动讲解
- windows的exe文件反编译为msi安装文件
- Java中获取时间戳
- 【基金学习】小白基金学习记录-从入门到实践(一)
- 前端工程师的 caniuse
- 国内的IT生意,敢问路在何方?
- 三国杀Excel版–让你见证Excel的神奇
- batchnorm原理及代码详解
- wifi找不到路由器可能的排查
- (附源码)计算机毕业设计ssm黑河市劳务人员管理系统
- 《模拟电子技术》(第五版)课后习题粗讲——第一章
- 【洛谷题解】P2404 自然数的拆分问题
- moment.js 实现获取近一月、近三月、近一年、一月后、一年后等
热门文章
- ValueError: Shapes () and (1, 1) are incompatible
- 详解基于图卷积的半监督学习(附代码)
- 淘沙潜行,数一数英雄的多姿,王者荣耀英雄、皮肤、武器展览
- python实现将将输入的可约分数化简为不可约分数
- linux闹钟命令,Linux基础命令一
- 2021-06-16 forkjion stream流式计算方法
- 曲奇云盘资源搜索引擎_工具集--任意资源搜索神器(不限速!!)
- 如何实现SpingAOP?及其实现过程分析
- python中pycharm倒计时_pycharm中的快捷键和简单设置
- 国外企业级区块链 联盟链