python详解json模块
我们在做工作中经常会使用到json模块,今天就简单介绍下json模块
什么是json
JSON ,全称为JavaScript Object Notation, 也就是JavaScript 对象标记,它通过对象和数组的组合米表示数据,构造简洁但是结构化程度非常高,是一种轻量级的数据交换格式。json模块在python中可以作为数据解析json
对象和数组
在JavaScript 语言中,一切都是对象。任何支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等,但是对象和数组是比较特殊且常用的两种类型
对象:它在JavaScript中是使用花括号{ }包裹起来的内容,数据结构为{ keyl : valuel,key2:value2}的键值对结构。在面向对象的语言中,key为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。
数组:数组在JavaScript中是方括号[]包裹起来的内容,数据结构为[ ”java ” ,” javascript ”,"vb " ]的索引结构。在JavaScript中, 数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引用得多。同样,值的类型可以是任意类型。
JSON对象格式
会发现和我们的字典格式是不是特别的一样
# 格式为{"name":"value"}
[{"name":"AnJing","age":""
}]
JSON简单使用
loads()方法
使用方法loads()将 json文字转化成json对象
# coding:utf-8
import json
str = '''
[{
"name":"AnJing",
"age":"26"
}]
'''
data = json.loads(str)
print(data)
print(type(data))
print(data[0]['name']) # 通过下标进行选择
print(data[0].get('name')) 代码结果:
[{'name': 'AnJing', 'age': ''}]
<class 'list'>
AnJing
AnJing
注意:在使用loads的时候json字符串必须要用双引号表示,否则会报错
(json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 3 column 5 (char 12))
dumps()方法
使用dumps()方法将json转换成字符串
# coding:utf-8
import json
str = [{
"name":"AnJing",
"age":""
}]
print(type(str))
data = json.dumps(str)
print(type(data))
print(data) 代码结果:
<class 'list'>
<class 'str'>
[{"name": "AnJing", "age": ""}]
另外如果想要保存的文字好看点,我们可以增加一个参数indent,代表缩进字符个数,已经可以写入中文的时候不会乱码,加入ensure_ascii=False
# coding:utf-8
import json
str = [{
"name":"安静",
"age":"",
"性别":"男"
}]
# indent 表示缩进
# ensure_ascii=False 表示写入中文
with open('123.json','w',encoding='utf-8')as f:
f.write(json.dumps(str,indent=2,ensure_ascii=False)) 代码结果:
[
{
"name": "安静",
"age": "",
"性别": "男"
}
]
load()方法
将文件内容转换成json数据
# 导入json模块
import json
str = [{
"name":"AnJing",
"age":""
}]
# 通过dumps写入文件中
with open('123.json','w')as f:
f.write(json.dumps(str))
# 通过load将数据转换成json
data = json.load(open('123.json','r'))
print(data) 代码结果:
[{'name': 'AnJing', 'age': ''}]
dump()方法
将json数据写入到文件中
# coding:utf-8
import json
str = [{
"name":"AnJing",
"age":""
}]
# 通过dump写入到json中
json.dump(str,open('123.json','w'))
# 通过load查看是否写入
data = json.load(open('123.json','r'))
print(data) 代码结果:
[{'name': 'AnJing', 'age': ''}]
简单的写了写json模块的使用方法,以及json的简单介绍,欢迎继续补充没有涉及到的知识。
感觉写的对您有帮助的,点个关注不迷路~~~~
python详解json模块的更多相关文章
- [转载]python 详解re模块
原文地址:python 详解re模块作者:Rocky 正则表达式的元字符有. ^ $ * ? { [ ] | ( ) .表示任意字符 []用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字 ...
- python 详解re模块
正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可以理解成或的关系.^ 如果放在字 ...
- 33 Python 详解命令解析 - argparse--更加详细--转载
https://blog.csdn.net/lis_12/article/details/54618868 Python 详解命令行解析 - argparse Python 详解命令行解析 - arg ...
- Python中的json模块
在Python内置函数中,有一个eval()函数可以将字符串内容转换成Python对象,比如我现在将一个字典 dic = {"name":"pengfy"}写到 ...
- python中序列化json模块和pickle模块
内置模块和第三方模块 json模块和pickle 模块(序列化模块) 什么是序列化? 序列化就是将内粗这种的数据类型转成另一种格式 序列化:字典类型——>序列化——>其他格式——>存 ...
- Python进阶(九)----json模块, pickle模块, os模块,sys模块,hashlib模块
Python进阶----json模块, pickle模块, os模块,sys模块,hashlib模块 一丶序列化模块 什么是序列化: 将一种数据结构,转换成一个特殊的序列(特殊字符串,用于网络传输 ...
- python中的 json 模块使用
(1)python 中生成 json 字符串: import json data = dict(ret=0, msg="Welcome, Login success!") json ...
- Python中的Json模块dumps、loads、dump、load函数介绍
Json模块dumps.loads.dump.load函数介绍 1.json.dumps() json.dumps() 用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json ...
- 【spring】jar包详解与模块依赖关系
以spring3.X为例 jar包详解 1. spring-core.jar:包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心: 2. spri ...
随机推荐
- SpringMVC重定向路径中带中文参数
SpringMVC重定向路径中带中文参数 springboot重定向到后端接口测试 package com.mozq.http.http_01.demo; import org.springframe ...
- promise 和 setTimeout 在任务队列的执行顺序
setTimeout(() => { console.log() }); const a = new Promise((resolve,reject)=>{ console.log(); ...
- vue项目实现路由按需加载的3种方式
vue异步组件技术 ==== 异步加载vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 .但是,这种情况下一个组件生成一个js文件 /* vue异步组件技术 */ { ...
- SQL查询--索引
索引概念和作用 索引是建立在表上的可选对象,目的是为了提高查询速度. 如果要在表中查询指定的记录,在没有索引的情况下,必须遍历整个表,而有了索引之后,只需要在索引中找到符合查询条件的索引字段值,就可以 ...
- CSP 2019 游记
Day -32 开坑. 没什么好说的,等个 5 天等初赛(应该叫第一轮认证)挂掉之后就能弃坑了. 今天开始停课,虽然每天只停半天,但是感觉还是特别的舒服~ 然而得等初赛过了才能全天停课-- 没关系,熬 ...
- golang数据结构之递归解决迷宫问题
简单来说:递归就是函数/方法自己调用自己,只是每次传入不同的变量. 递归可以解决各种数学问题:n皇后问题.阶乘问题.汉诺塔.迷宫问题.球和篮子问题等等: maze.go package maze im ...
- VS 2017 + OpenCV + Spinnaker SDK(PointGrey) 配置
1. OpenCV 配置 1.1 下载 opencv 源码,并将其添加至环境变量 D:\opencv4.1\build\x64\vc15\bin 注:vs2015 选 vc14,vs2017 选 vc ...
- SQLite安装及使用教程
SQLite是一款轻型的嵌入式关系数据库,轻量级,效率高,操作起来也特别方便 我们今天来讲解一下SQLite的安装和一些基本操作 SQLite下载 如果是64位机,下载下面的两个解压就好 在dos界面 ...
- 蓝牙Inquriy 过程详解
问题 今天遇到了一个问题,就是自己的耳机产品,手机经常搜不到,从日志里面查看,发现原因是平时手机蓝牙发送的是inquiry mode =2 出问题的时候,inquiry mode =1 由于本设备很多 ...
- gcc 编译安装
wget https://kojipkgs.fedoraproject.org//packages/gcc/7.1.1/1.module_1a179a7b/src/gcc-7.1.1-1.module ...