天天看点

「python」Json

Json

序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML等。我们把变量从内存中变成可存储或传输的过程称之为序列化

反序列化:从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。变量内容从序列化的对象重新读到内存里称之为反序列化

json是什么呢?

是一种轻量级的数据交换格式。

完全独立于编程语言的文本格式来存储和表示数据。

简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,易于机器解析和生成,并有效地提升网络传输效率。

常用有2个方法,也是最基本的使用方法:

1、dumps:把字典转成json字符串

2、loads:把json字符串转成字典

import json 
test_dict = {'a':1, 'b':2}
print(type(test_dict))
 
#把字典转成json字符串
json_text = json.dumps(test_dict)
print(json_text)
print(type(json_text))
 
#把json字符串转成字典
json_dict = json.loads(json_text)
print(json_dict)
print(type(json_dict))           

输出结果为:

<class 'dict'>
{"a": 1, "b": 2}
<class 'str'>
{'a': 1, 'b': 2}
<class 'dict'>           

还有有2个方法读写json文件的方法,与上述方法相比都少了s

1、dump:

2、load:

  • 把字典转成json字符串,并保存到文件中
import json
import codecs
test_dict = {'a':1, 'b':2}
#把字典转成json字符串
json_text = json.dumps(test_dict) 
#把json字符串保存到文件
#因为可能json有unicode编码,最好用codecs保存utf-8文件
with codecs.open('1.json', 'w', 'utf-8') as f:
    f.write(json_text)           
  • 从json文件中读取到字典中
import json
import codecs 
#从文件中读取内容
with codecs.open('1.json', 'r', 'utf-8') as f:
    json_text = f.read()
#把字符串转成字典
json_dict = json.loads(json_text)           

上面代码,我们也可以用load和dump修改。

  • dump把字典转成json字符串并写入到文件
import json
import codec 
test_dict = {'a':1, 'b':2} #把字典转成json字符串并写入到文件
with codecs.open('1.json', 'w', 'utf-8') as f:
    json.dump(test_dict, f)           
  • load从json文件读取json字符串到字典
#coding:utf-8
import json
import codecs
#从json文件读取json字符串到字典
with codecs.open('1.json', 'r', 'utf-8') as f:
    json_dict = json.load(f)           

相关参数

  • json.dumps 相关参数:

(1)sort_keys是告诉编码器按照字典排序(a到z)输出。

(2)indent参数根据数据格式缩进显示,读起来更加清晰

(3)separators参数的作用是去掉,,:后面的空格,从上面的输出结果都能看到”, :”后面都有个空格,这都是为了美化输出结果的作用,但是在我们传输数据的过程中,越精简越好,冗余的东西全部去掉,因

此就可以加上.

(4)skipkeys参数,在encoding过程中,dict对象的key只可以是string对象,如果是其他类型,那么在编码过程中就会抛出ValueError的异常。skipkeys可以跳过那些非string对象当作key的处理.

(5)输出真正的中文需要指定ensure_ascii=False

参考:廖雪峰python

http://yshblog.com/blog/104