python中json的基本使用
一.json的概念
- json是一种通用的数据类型
- 一般情况下接口返回的数据类型都是json
- 长得像字典,形式也是k-v{ }
- 其实json是字符串
- 字符串不能用key、value来取值,所以要先转换为字典才可以
- json的格式如下:
{
"error_code": 0,#要使用双引号,如果是单引号则运行时会报错,可以上网做在线json格式校验
"stu_info": [
{
"id": 309,
"name": "小白",
"sex": "男",
"age": 28,
"addr": "河南省济源市北海大道32号",
"grade": "天蝎座",
"phone": "18512572946",
"gold": 100
},
{
"id": 310,
"name": "小白",
"sex": "男",
"age": 28,
"addr": "河南省济源市北海大道32号",
"grade": "天蝎座",
"phone": "18516572946",
"gold": 100
}
]
}
二、json操作
1.json转换成字典:
(1).load()方法
import json
res = json.loads(s)
print(res) # 打印字典
print(type(res)) #打印res类型
print(res.keys()) #打印字典的所有key
- 要先读文件,然后转换:
f = open('stus.json',encoding='utf-8')
content = f.read() #使用loads()方法需要先读文件
user_dic = json.loads(cotent)
print(user_dic)
(2).load()方法
import json
f = open('stus.json',encoding="utf-8")
user_dic = json.load(f)
print(user_dic)
(3)区别
- loads() 传的是字符串,而load()传的是文件对象
- 使用loads()时需要先读取文件在使用,而load()则不用
2、字典转成json串:
- 文件里只能写字符串,但是可以把字典转成json串,json串是字符串,可以写到文件里
(1)dumps()方法
stus = {'xiaojun':'123456','xiaohei':'7891','abc':'11111'}
res2 = json.dumps(stus) #先把字典转成json
print(res2)
print(type(res2))
- dumps()方法:把字典转换为json串
with open('stus.txt','w',encoding='utf-8') as f: # 打开文件
f.write(res2) #在文件里写入转成的json串
- 使用.dumps()方法前,要先打开文件,再写入:
stus={'xiaojun':'123456','xiaohei':'7890','lrx':'111111'}
res2 = json.dumps(stus,indent=8,ensuer_ascii=False)
print(res2)
with open("stus.json",'w‘,encoding='utf-8') as f # 使用.dumps()方法是要写入
f.write(res2)
(2)dump()方法
stus={'xiaojun':'123456','xiaohei':'7890','lrx':'111111'}
f = open('stus2.json','w',encoding='utf-8')
json.dump(stus,f,indent,ensure_ascii=False)
(3)区别
- dump()不需要使用.write()方法,只需要写那个字典,那个文件即可;而.dumps()需要使用.write()方法写入.
- 如果把字典写到文件里面的时候,dump()好用;但是如果不需要操作文件,或需要把内容存储到数据库何excel,则需要使用dumps()先把字典转换成字符串,再写入.
(4)dump\dumps参数 - dumps/dump中使用参数indent,为字符串转行 + 缩进:
res2=json.dumps(stus.indent=4)
print(res2)#打印字符串
#结果为:
'''
{
"xiaojun": "123456",
"xiaohei": "7891",
"lrx": "hailong",
"tanailing": "111111"
}
'''
- dumps\dump中使用参数 ensure_ascii,为内容输出为中文:
res2 = json.dumps(stus,indent=4,ensure_ascii=False) # 为False时内容输出显示正常的中文,而不是转码
print(res2)
3、不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的。
python中json的基本使用的更多相关文章
- python中json格式数据输出实现方式
python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info[&q ...
- Python中json的简单读写操作
Python中json的简单读写操作 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...
- python中json的操作示例
先上一段示例 # -*- coding: cp936 -*- import json #构造一个示例数据,并打印成易读样式 j = {} j["userName"]="a ...
- python 中 json的处理
python中的json对象,其实就是字典类型. 利用json模块,可以将字符串类型的json串转换为 json对象(字典对象),也可以将json对象(字典对象)转换为字符串对象. 代码如: #cod ...
- Python中Json对象处理的jsonpath-rw
这两天在写一个爬虫,需要从网站返回的json数据提取一些有用的数据. 向url发起请求,返回的是response,在python3中,response.content是二进制bytes类型的,需要用d ...
- python中json.load()、json.loads()、json.dump()、json.dumps()的区别
json.load()从文件中读取json字符串 json.loads()将json字符串转换为字典类型 json.dumps()将python中的字典类型转换为字符串类型 json.dump()将j ...
- 【转】python中json.loads与eval的区别
JSON有两种结构: “名称/值”对的集合(A collection of name/value pairs).不同的语言中,它被理解为对象(object),纪录(record),结构(struct) ...
- python中json与dict之间转换
Python之dict(或对象)与json之间的互相转化 在Python语言中,json数据与dict字典以及对象之间的转化,是必不可少的操作. 在Python中自带json库.通过import js ...
- Python中json.loads解析包含\n的字符串会出错
用python中的json.loads解析字符串,失败了. [解决过程] 1.调试了半天,终于发现,如果把其中的: "呵呵加那么多连接啊\n\n这个标准还是不错的\n\n给大家推荐一个更多的 ...
- python中json.dumps使用的坑以及字符编码
我们知道,python中的字符串分普通字符串和unicode字符串,一般从数据库中读取的字符串会自动被转换为unicode字符串 下面回到重点,使用json.dumps时,一般的用法为: >&g ...
随机推荐
- python3-多重继承
继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能. 回忆一下Animal类层次的设计,假设我们要实现以下4种动物: Dog - 狗狗: Bat - 蝙蝠: Parrot - ...
- ThreadLocal 解决simpledateformat线程不安全
SimpleDateFormat在多线程情况下会出现线程不安全的情况,故用ThreadLoacl 处理/** * 用ThreadLocal处理simplDateFormat线程不安全 */public ...
- Bean的生命周期与JVM**
案例: 在service里定义了一个全局变量,这类变量只能是final的.如果不是,在代码中一旦有地方给该变量进行业务赋值.当不满足赋值条件时变量仍然保留上次的赋值的值. 这是因为Bean没有销毁. ...
- 【NOIP2016提高A组模拟8.14】疯狂的火神
题目 火神为了检验zone的力量,他决定单挑n个人. 由于火神训练时间有限,最多只有t分钟,所以他可以选择一部分人来单挑,由于有丽子的帮助,他得到了每个人特定的价值,每个人的价值由一个三元组(a,b, ...
- Element ui 中的Upload用法
效果图: 代码:
- 封装Qt的SQLite接口类
还没测试完善.. #ifndef SQLITE_H #define SQLITE_H #include <QSqlDatabase> #include <QSqlQuery> ...
- luogu【P1024 一元三次方程求解】题解
题目描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差 ...
- Laya 使list渲染支持分帧的思路
Laya 使list渲染支持分帧的思路 @author ixenos 2019-09-06 1.由于Laya的list渲染时没有做分帧处理,只做了延迟帧处理,所以当单页元素较多时,会有大量运算卡帧的情 ...
- 基于点云的3ds Max快速精细三维建模方法及系统的制作方法 插件开发
基于点云的3ds Max快速精细三维建模方法及系统的制作方法[技术领域][0001]本发明涉及数字城市三维建模领域,尤其涉及一种基于点云的3d ...
- es的索引库模板
在实际的生产中,如果要插入大批量数据的时候需要使用多个索引库,如果我们还是手工指定每个索引的配置信息settings和mappings,是非常耗时的: 针对这种情况,es有index template ...