用python解析JSON
先来认识下JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
简单点说,设计JSON这种格式,主要是为了方便数据交换
引用模块
import json
基本操作
- 编码:把一个python对象编码转换成一个json字符串
json.dumps()
- 解码:把一个json字符串转换成一个python对象
json.loads()
转化表
1.Python->JSON
Python | JSON |
---|---|
dict | object |
list,tuple | array |
str,unicode | string |
int,long,float | number |
True | true |
False | false |
None | null |
2.JSON->Python
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number(int) | int,long |
number(float) | float |
true | True |
false | False |
json.dumps()
1.编码,该方法返回了一个str对象encodedjson
>>> import json
>>> dict={"a":1,"b":2,"c":{"d":3,"e":(4,5)}}
>>> type(dict)
<type 'dict'>
>>> s=json.dumps(dict)
>>> type(s)
<type 'str'>
>>> print s
{"a": 1, "c": {"e": [4, 5], "d": 3}, "b": 2}
2.json.dumps方法还提供了很多好用的参数可供选择,比较常用的有sort_keys(对dict对象进行排序,我们知道默认dict是无序存放的),separators,indent等参数。
sort_keys
>>> data1 = {'b':789,'c':456,'a':123}
>>> data2 = {'a':123,'b':789,'c':456}
>>> d1=json.dumps(data1,sort_keys=True)
>>> d2=json.dumps(data2,sort_keys=True)
>>> d3=json.dumps(data2)
>>> print d1
{"a": 123, "b": 789, "c": 456}
>>> print d2
{"a": 123, "b": 789, "c": 456}
>>> print d3
{"a": 123, "c": 456, "b": 789}
>>> print d1==d2
True
>>> print d1==d3
False
indent参数是缩进的意思,可以使得数据存储的格式变得更加优雅
>>> data1 = {'b':789,'c':456,'a':123}
>>> d1=json.dumps(data1,sort_keys=True,indent=3)
>>> print d1
{
"a": 123,
"b": 789,
"c": 456
}
separator参数可以移除多余的空白符,来达到数据压缩的目的。该参数传递是一个元组,包含分割对象的字符串。
>>> data1 = {'b':789,'c':456,'a':123}
>>> len(data1)
3
>>> len(repr(data1))
30
>>> len(json.dumps(data1))
30
>>> len(json.dumps(data1,indent=2))
40
>>> len(json.dumps(data1,separators=(',',':')))
25
注意:
1.separators = (',', ':')为固定,是理想的分割结果
2.str()一般是将数值转成字符串。
repr()是将一个对象转成字符串显示,注意只是显示用,有些对象转成字符串没有直接的意思。如list,dict使用str()是无效的,但使用repr可以,这是为了看它们都有哪些值,为了显示之用。
>>> a = 'hello'
>>> a
'hello'
>>> repr(a)
"'hello'"
>>> print repr(a)
'hello'
>>> str(a)
'hello'
>>> print str(a)
hello
json.loads()
解码
>>> data1 = {'b':789,'c':456,'a':123}
>>> s=json.dumps(data1)
>>> type(s)
<type 'str'>
>>> s1=json.loads(s)
>>> type(s1)
<type 'dict'>
>>> print s1
{u'a': 123, u'c': 456, u'b': 789}
>>> print s
{"a": 123, "c": 456, "b": 789}
>>> print s1['a']
123
注:loads方法返回了原始的对象,但是仍然发生了一些数据类型的转化。比如,上例中‘a’转化为了unicode类型。
参考
暂时就这么多了,之后还会更新有关python的内容=_=
用python解析JSON的更多相关文章
- 使用Python解析JSON数据的基本方法
这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------- ...
- python 解析json loads dumps
认识 引用模块 重要函数 案例 排序 缩进参数 压缩 参考 认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standa ...
- 笔记:使用Python解析JSON
使用Python解析JSON json是一种轻量级的数据交换格式,易于阅读和编写. json函数具体作用描述 函数 具体描述作用 json.dumps 将python对象编码为JSON字符串 json ...
- 使用Python解析JSON数据
使用Python解析百度API返回的JSON格式的数据 # coding:utf-8 # !/usr/bin/env python import matplotlib.pyplot as plt fr ...
- python 解析json
一.概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的 ...
- python解析json文件之简介
一.JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition ...
- python解析json数据
现在的API接口多为xml或json,json解析更简洁相对xml来说 以豆瓣的API接口为例,解析返回的json数据: https://api.douban.com/v2/book/1220562 ...
- Python解析json字符串,json字符串用法
json数据简介 json数据是一个轻量级的数据交换格式,采用完全独立于语言的文本格式,这些特性使json称为理想的数据交换语言,易于人阅读和编写,同时易于机器解析和生成. json中的字符集必须是U ...
- python 解析json格式
对于网页爬取结果为json格式的,可以直接使用python的json库解析,获取相应字段的值,比用正则匹配更简单规范. import json…… resp=requests.post(url,hea ...
随机推荐
- linux 定时任务 crontabs 安装及使用方法
boom 安装 crontab yum install crontabs centos7 自带了我没有手动去装 启动/关闭 service crond start // 启动服务 service cr ...
- LiteIDE TARGETARGS -conf_path=E:/PokerServer/src/GameServer/conf/texas.xml -log_dir=E:/PokerServer/src/GameServer/main/log
LiteIDE TARGETARGS -conf_path=E:/PokerServer/src/GameServer/conf/texas.xml -log_dir=E:/PokerServer/s ...
- FC游戏修改教程(hack)小白文。
FC(NES)红白机Family Computer(简称FAMICOM)(或Nintendo Entertainment System)是任天堂公司发行的第一代家用游戏机. 修改FC游戏需要的工具有 ...
- Excel催化剂开源第2波-自动检测Excel的位数选择对应位数的xll文件安装
Excel插件的部署问题难倒了不了的用户,特别是VSTO的部署,用ExcelDna开发的xll文件部署方便,不挑用户机器环境,是其开发Excel插件的一大优势. 其开发出来的xll文件,最终还是需要考 ...
- 前端框架——树形结构Ztree的使用
地址 官网:http://ztree.me 码云:https://gitee.com/zTree/zTree_v3 可以实现效果 使用方式 下载资源文件,引入到自己的项目中 <head> ...
- TensorFlow笔记-文件读取
小数量数据读取 这些只用于可以完全加载到内存中的小型数据集: 1,储存在常数中 2,储存在变量中,初始化后,永远不改变它的值 使用常量 training_data = ... training_lab ...
- C#3.0新增功能09 LINQ 基础01 语言集成查询
连载目录 [已更新最新开发文章,点击查看详细] 语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称. 数据查询历来都表示为简单的字符串,没有编译时类型检查或 Inte ...
- AIX7.1安装zabbix_agent3.4
1.在zabbix官网https://www.zabbix.com/download下载Zabbix pre-compiled agents 2.Zabbix pre-compiled agents安 ...
- JSP数据交互(一)
1.JSP内置对象:JSP内置对象是 Web 容器创建的一组对象,不用通过手动new就可以使用 2.JSP9大内置对象: 对象名称 类型 request (请求对象) javax.servl ...
- bean的创建(五)第三部分 bean工厂方法参数的解析
准备好一系列参数之后,开始参数类型的转换,方法参数的对应. ConstructorResolver.createArgumentArray private ArgumentsHolder create ...