Python中的json模块
在Python内置函数中,有一个eval()函数可以将字符串内容转换成Python对象,比如我现在将一个字典 dic = {"name":"pengfy"}写到一个叫hello的文件中,再读取出来的结果就变成字符串了,在json中,json.loads也有一样的作用,但是在一些特殊情况下,eval就不适用了,这时候还是要专业的json模块进行转换。
# 写入文件
dic='{"name":"pengfy"}'
f=open("hello","w")
f.write(dic) # eval()方法
f_read=open("hello","r")
data=f_read.read()
print(type(data)) # <class 'str'>
data=eval(data)
print(data["name"]) # pengfy # json方法
f_read=open("hello","r")
data = json.loads(f_read.read())
print(data) #{'name': 'pengfy'}
print(data['name']) # pengfy
JSON
对web开发有兴趣的同学都知道,如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下:

序列化
序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。
下面使用json演示序列化过程:
import json # 序列化
dic={'name':'alex'}
f=open("new_hello","w") dic_str=json.dumps(dic)
f.write(dic_str) #这里和json.dump(dic,f)作用一样
以上需要强调几点:
dic中的内容都是单引号,但是写入文件后,都会变成双引号,不信可以试试。这里面变化就是:
{'name':'pengfy'}---->{"name":"pengfy"}---->'{"name":"pengfy"}'
上面光说的字典,其他数据也是一样的,比如:
i=8 ---->'8'
s='hello' ---->"hello"----->'"hello"'
l=[11,22] ---->"[11,22]"
下面看一下json怎么反序列化的:
f_read=open("new_hello","r")
data=json.loads(f_read.read()) # data=json.load(f)
print(data["name"]) # pengfy
print(data) #{'name': 'pengfy'}
print(type(data)) #<class 'dict'>
我们看到上面的dumps和loads,dump和load都是成双成都出现的,但是只要满足json格式要求,都可以直接用loads或load导出来,比如:
dic_str = "{'name':'pengfy'}"
data = json.loads(dic_str)
print(data) #直接报错
dic_str = '{"name":"pengfy"}'
data = json.loads(dic_str)
print(data) #{'name': 'pengfy'}
这么看来,json模块也可以简单的掌握。
Python中的json模块的更多相关文章
- python中的 json 模块使用
(1)python 中生成 json 字符串: import json data = dict(ret=0, msg="Welcome, Login success!") json ...
- python中序列化json模块和pickle模块
内置模块和第三方模块 json模块和pickle 模块(序列化模块) 什么是序列化? 序列化就是将内粗这种的数据类型转成另一种格式 序列化:字典类型——>序列化——>其他格式——>存 ...
- Python中的Json模块dumps、loads、dump、load函数介绍
Json模块dumps.loads.dump.load函数介绍 1.json.dumps() json.dumps() 用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json ...
- Python 3 中的json模块使用
1. 概述 JSON (JavaScript Object Notation)是一种使用广泛的轻量数据格式. Python标准库中的json模块提供了JSON数据的处理功能. Python中一种非常常 ...
- 在 Python 中使用 JSON
在 Python 中使用 JSON 本教程将会教我们如何使用 Python 编程语言编码和解码 JSON.让我们先来准备环境以便针对 JSON 进行 Python 编程. 环境 在我们使用 Pytho ...
- python中的json的基本使用方法
在python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互,从而在很多时候,可以使用json数据格式作为程序之间的接口, #!/usr/bin/env ...
- Python中的random模块,来自于Capricorn的实验室
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- Python中的logging模块
http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...
- Python中的random模块
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
随机推荐
- Net Framework 4.7.2 覆盖 Net Framework 4.5 解决办法
场景:由于c盘空间不够,本机pc又安装了 vs2013 和 vs2017 : 所以通过,github上的一个工具,把vs2013 卸载完毕,只留下vs2017: 导致问题由于项目需要net frame ...
- 记忆(缓存)函数返回值:Python 实现
对于经常调用的函数,特别是递归函数或计算密集的函数,记忆(缓存)返回值可以显着提高性能.而在 Python 里,可以使用字典来完成. 例子:斐波那契数列 下面这个计算斐波那契数列的函数 fib() 具 ...
- 1、Linux下部署NetCore应用
1.根据官方文档配好.NetCore环境 https://www.microsoft.com/net/learn/get-started-with-dotnet-tutorial 2.安装Nginx ...
- sublime text 3 package Install 安装失败解决方法
失败原因为官网地址被墙,导致channel_v3文件无法访问. 解决方法: 点击Preferences——>Package Settings——>Package Control——> ...
- python基础学习(一)--数据类型
Python一个 高级语言 2017-09-19 1.1 Python背景简介(感谢伟大的廖雪峰大佬带我们走上一条光头路,嘿嘿) 写了大半年Python代码,感觉收获不是很大,都是现学现卖,没有系统 ...
- Pytorch: cuda runtime error (59) : device-side assert triggered at /pytorch/aten/src/THC/generic/THCTensorMa
更换了数据集, 在计算交叉熵损失时出现错误 : cuda runtime error (59) : device-side assert triggered at /pytorch/aten/src/ ...
- buils tool是什么?为什么使用build tool?java主流的build tool
定义: build tool是可以自动由源代码创建可执行的应用程序的程序. Building 包括编译.链接和打包代码成一个可用的或可执行形式. 在小型项目,开发人员常常会手动调用构建过程.在更大的项 ...
- String.matches()的用法
https://blog.csdn.net/victoryckl/article/details/6930409
- 机器学习--------SVM
#SVM的使用 (结合具体代码说明,代码参考邹博老师的代码) 1.使用numpy中的loadtxt读入数据文件 data:鸢尾花数据 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3 ...
- Tips_信息列表(手风琴)效果的多种实现方法
效果图: 一.纯CSS实现 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...