Python基础-----json模块

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import json

'''
我们把对象(变量)从内存中变成可存储或传输的过程称之为[序列化],在Python中叫pickling,
在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。

序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。
反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。
'''

'''
1 json.dumps(变量名)
用于将传入的变量表示的数据类型都变为字符串类型
并且回将字符串内的''变为""。
'''

dic = {'name':'alex'}
dic_str = json.dumps(dic) #----> '{"name":"alex"}'

num = 8
num_str = json.dumps(num) #----> '8'

st = 'hello'
st_str = json.dumps(st) #----> '"hello"'

li = [11,22]
li_str = json.dumps(li) #----> '[11,22]'

###################################################################################

'''
2 json.loads(变量名)
用于将传入的变量表示的字符串类型都转换为原类型
并且返回原样。
'''

# dic = json.loads(dic_str) #----> {'name':'alex'}


'''
json 和 python数据对应
import json
x="[null,true,false,1]"
print(json.loads(x)) #-----> [None, True, False, 1]
'''

###################################################################################
'''用于文件操作'''
'''
3 json.dump(变量名,文件名)
用于将传入的变量表示的数据类型都变为字符串类型
并且回将字符串内的''变为"",并写入到指定的文件中,
无需执行文件的write()方法。
'''
with open('test','w') as f:
json.dump(dic,f) #----> 等同于dic_str = json.dumps(dic) f.write(dic_str)

###################################################################################

'''
4 json.load(文件名)
用于直接将文件中字符串类型都转换为原类型,并读取出来,
无需执行文件的read()方法。
'''
with open('test','r') as f:
json_read = json.load(f) #----> 等同于dic_str = json.dumps(dic) f.write(dic_str)
print(json_read)


#==================================================================================#
'''
注意json.dumps()和json.loads()不一定非要一起才能使用
如果文件中的字符串类型,满足json要求,则可以直接使用
json.loads()将文件读取出来
import json
#dct="{'1':111}"#json 不认单引号
#dct=str({"1":111})#报错,因为生成的数据还是单引号:{'one': 1}

dct='{"1":"111"}'
print(json.loads(dct))

#conclusion:
# 无论数据是怎样创建的,只要满足json格式,就可以json.loads出来,不一定非要dumps的数据才能loads
'''
posted @ 2018-10-03 23:42  Meanwey  阅读(227)  评论(0编辑  收藏  举报