python的json模块

什么是序列化和反序列化?

序列化

在分布式环境下,无论是何种数据,都会以二进制序列的形式在网络上传输。序列化是一种将对象以一连串的字节描述的过程,用于解决在对对象流进行读写操作

时所引发的问题。序列化可以将对象的状态写在流里进行网络传输,或保存在文件、数据库里,并在需要时把该流读取出来重新构造一个相同的对象。

反序列化

就是将流转为对象。

json

我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flatte

ning等等,都是一个意思。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。反过来,把变量内容从序列化的对象重新读到内存里

称之为反序列化,即unpickling。

如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可

以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。

介绍使用四个方法

json.dumps()

json.dump()

json.loads()

json.load()

一般存储数据的方法

在介绍之间我们先说一下,当我们在存储数据的时候,一定要是字符串的类型才能存储。

下面是一个简单的存数据的程序

dic={"name":"linlin"}

#将字典类型转为字符串类型

data1=str(dic)

f1=open('file1','w')

#存入数据

f1.write(data1)

f1.close()

取出数据

f2=open('file1','r')

data2=f2.read()

print(data2)

print(type(data2))

data2=eval(data2)

print(data2['name'])

f2.close()

运行结果

我们从文件取出来,如果不使用eval函数,取出来还是字符串类型,就不能直接根据键名来使用键值

eval内置方法可以将一个字符串转成python对象

eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,

eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值。

json.dumps()与json.loads()

用于数据交换和文件操作

import json

dic={"name":"linlin"}

#转为json字符串,序列化

data1= json.dumps(dic)

#存数据

f=open('filename','w')

f.write(data1)

f.close()

#取数据

f=open('filename','r')

#反序列化

data2=json.loads(f.read())

f.close()

json.dump()与json.load()

只适用于文件操作

import json

dic={"name":"linlin"}

#取数据

f=open('filename','w')

#序列化数据+自动存放数据

json.dumps(dic,f)

#存数据

f=open('filename','r')

#反序列化数据+自动取出数据

json.load(f)

python中json模块博客园_python的json模块相关推荐

  1. python的selenium模块博客园_Python学习--Selenium模块学习(2)

    Selenium的基本操作 获取浏览器驱动寻找方式 1. 通过手动指定浏览器驱动路径 2. 通过 `$PATH`环境变量找寻浏览器驱动 控制浏览器访问URL find系列函数定位元素 - `find_ ...

  2. python中json模块博客园_Python中的Json模块详解

    Python中的Json模块详解 Json(JavaScript Object Notation)它是一种轻量级的数据交换格式,具有数据格式简单,读写方便易懂等很多优点.许多主流的编程语言都在用它来进 ...

  3. python之路 mysql 博客园_Python之路(二十七):Mysql(下)

    本结目录 数据库操作 数据表操作 外键约束 多表查询 索引 事务 python连接Mysql 数据库操作 此操作针对windows环境下 该操作再Mysql服务器启动以及客户端连接之后 对数据库操作之 ...

  4. python实现计算器代码 博客园_python实现计算器

    python实现计算器 1.题目描述 实现一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算 1.1输入 ...

  5. python之路 mysql 博客园_python之路--MySQL数据库初识

    一 . MySQL安装 #下载MySQL地址 https://dev.mysql.com/downloads#要选稳定的,不要选最新的,稳定的就是半年以上没有出现过bug 现在5.6.43为绝大多数使 ...

  6. python tkinter详解 博客园_python tkinter-布局

    包装布局pack() 目前对它的感觉是,当一个窗体的对象都设置完属性后,最后用它来绑定到窗体上.之后就不能再设置属性了 名称 描述 取值范围 expand 当值为"yes"时,si ...

  7. python博客园_python模拟博客园登录-基础版

    mport time import inspect from functools import wraps user_status = {'username': None,'status': Fals ...

  8. python 装饰器写博客园

    需求 1),启动程序,首页面应该显示成如下格式: 欢迎来到博客园首页 1:请登录 2:请注册 3:文章页面 4:日记页面 5:评论页面 6:收藏页面 7:注销 8:退出程序 2),用户输入选项,3~6 ...

  9. python 爬虫 博客园_Python爬虫爬取博客园作业

    分析一下他们的代码,我在浏览器中对应位置右键,然后点击检查元素,可以找到对应部分的代码.但是,直接查看当前网页的源码发现,里面并没有对应的代码.我猜测这里是根据服务器上的数据动态生成的这部分代码,所以 ...

最新文章

  1. 在CentOS 6.9 x86_64上玩转OpenResty 1.13.6.1中的resty-cli模块
  2. lda主题模型的可视化_把LDA主题模型作为自己的硕士课题,有什么可以做的?
  3. Silverlight中调用WebService-发送邮件测试实例
  4. java null转换jason_常见java问题及解决办法汇总(干货可收藏)
  5. ubuntu的磁盘扩容
  6. LVS-DR负载均衡-02
  7. 进程与服务的签名_服务器被黑客攻击后如何查找溯源攻击
  8. Linux http网页美化,Linux_用javascript实现select的美化,论坛经常有人会问到用CSS如何 - phpStudy...
  9. 缺少训练样本怎么做实体识别?小样本下的NER解决方法汇总
  10. ajax音乐网站,AJAX在线音乐网站(5)测试
  11. IDM最强大的多线程下载器 Internet Download Manager v2021 中文版+超多皮肤
  12. Codeforces Round #173 (Div. 2) E. Sausage Maximization —— 字典树 + 前缀和
  13. MIMO-OTFS in High-Doppler Fading Channels:Signal Detection and Channel Estimation(3)
  14. mac电脑利用file和iconv命令修改文件编码
  15. 只能选择分卷文件的第一部分_2021学年高一数学新教材必修第一册精讲精练培优讲义(更新第4章,网盘免费下)...
  16. LeetCode通关:听说链表是门槛,这就抬脚跨门而入
  17. 【SaaS播客】onboard4. 连线硅谷顶尖Product-Led Growth公司产品经理,聊聊如何打造一流PLG产品
  18. R 加权最小二乘 代码_如何用EXCEL的规划求解功能优化投资组合的阿尔法值(最小二乘估计法)?...
  19. obj转stl_STL转STP的方法视频教程,OBJ格式转STP或者IGS开模具格式的过程,STL转STP软件介绍...
  20. 关于在MacBook上查找序列号你知道吗

热门文章

  1. 关于控制台程序的一些想法
  2. 增加话务系统功能感想
  3. SpringBoot中的自定义路径怎么配置/根目录配置方法
  4. idea包名呈现层级显示
  5. 基于 ELK Stack 和 Spark Streaming 的日志处理平台设计与实现
  6. 【译】Alethio: Lighting Up the Blockchain with Real Time Data
  7. Plasma链0x1的构造
  8. 理解ResNet结构与TensorFlow代码分析
  9. intellij idea 2018 license 可用无废话
  10. JZOJ 5397. 【NOIP2017提高A组模拟10.6】Biology