python(37): json操作

一. 简介

JSON在python中分别由list和dict组成。

这是用于序列化的两个模块:

  • json: 用于字符串和python数据类型间进行转换
  • pickle: 用于python特有的类型和python的数据类型间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

json dumps把数据类型转换成字符串 dump把数据类型转换成字符串并存储在文件中 loads把字符串转换成数据类型 load把文件打开从字符串转换成数据类型

json是可以在不同语言之间交换数据的,而pickle只在python之间使用。json只能序列化最基本的数据类型,josn只能把常用的数据类型序列化(列表、字典、列表、字符串、数字、),比如日期格式、类对象!josn就不行了。而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。

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
boject    dict
string   unicode
number(int)   int,long
number(real)   float
true   True
false    False
null   None


json函数

函数   作用
json.dump  将dict转换为str写入文件
json.dumps    将 Python 对象编码成 JSON 字符串
json.load    将json文件读出到内存,并转换为python的标准词典类型
json.loads    将已编码的 JSON 字符串解码为 Python 对象

二. 参数使用

josn.dumps()参数

参数   功能
data   原始dict数据
skipkeys    如果“skipkeys”为真,那么“dict”键的非基本类型(‘str’,‘int’,‘ float’,‘ bool’,‘None’)将被跳过,而不是引发“ TypeError ”。
ensure_ascii    如果"ensure_ascii "为false,那么返回值可以包含非ascii字符(如果它们出现在"obj"中包含的字符串中)。否则,所有这些字符都在JSON字符串中转义。
check_circular   如果"check_circular"为false,那么容器类型的循环引用检查将被跳过,循环引用将导致"OverflowError "(或者worse)。
allow_nan   如果"allow_nan"为false,那么它将是一个"ValueError"’,用于序列化超出范围的’float ‘值(‘nan’,‘inf’,’-inf’),严格遵守JSON规范,而不是使用JavaScript等价的值(’ nan’, ’ Infinity’, ‘-Infinity’)。
indent    如果" indent"是一个非负整数,那么JSON数组元素和对象成员将使用该缩进级别进行漂亮的打印。缩进级别0只会插入新行。‘None’是最紧凑的表达。
separators    separators分隔符,默认是(’,’, ‘:’),字典之间用“,”隔开,而key和value之间用“:”隔开
sort_keys    如果"sort_keys"为真(默认值:" False"),那么字典的输出将按键排序。

2.1 ensure_ascii - ascii使能

f = open(self.path, 'w+', encoding='utf-8')
json.dump(self.data, f, ensure_ascii=False)  #不使用ascii
》》
dehug.json

{"a": "123", "1": ["a", "2", 222], "ddd": {"d": 123}, "中文测试": "skdjhfnj", "ovnciosdv": 654446}


json.dump(self.data, f, ensure_ascii=True)
》》
debug.json

{"a": "123", "1": ["a", "2", 222], "ddd": {"d": 123}, "\u4e2d\u6587\u6d4b\u8bd5": "skdjhfnj", "ovnciosdv": 654446}

2.2 indent - 缩进

indent不传参 默认缩进为4;传参则根据传参而定

 


 

参考文档:

python读写json文件 - Bigberg - 博客园

Python 3 操作json 文件 - 微微微笑 - 博客园

python 处理json文件及中文文字处理问题_litchi125的博客-CSDN博客_python处理json中文

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值