# 参考资料:
# python模块(转自Yuan先生) - 狂奔__蜗牛 - 博客园
# https://www.cnblogs.com/guojintao/articles/9070485.html
# ------------------------------------------------------------
# ********************day22_3-json模块 *******************
# ********************day22_3-json模块 *******************
# ********************day22_3-json模块 *******************
# =====>>>>>>内容概览
# =====>>>>>>内容概览
# =====>>>>>>内容概览
# ------------------------------------------------------------
# # 0、json概述
# # # JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。
# # # Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:
# # # json.dumps(): 对数据进行编码。
# # # json.loads(): 对数据进行解码。
# # # Python3 JSON 数据解析 | 菜鸟教程
# # # http://www.runoob.com/python3/python3-json.html
# # # 作用: 可以实现跨平台实现数据的传输,不不仅仅是在python之间,可以在多个语言平台之间实现数据传输
# # # 也因此,在数据传输的编码与解码上,经常通过json来进行,而pickle的使用率会低下一些
# ------------------------------------------------------------
# ------------------------------------------------------------
# # 1、不用jason方法实现在写入文件的数据进行还原
# # # 使用json方法见4
# ------------------------------------------------------------
# ------------------------------------------------------------
# # 2、json.dumps()
# # # json.dumps(): 对数据进行编码。
# # # 需要注意的是:json的dumps会数据进行统一化处理,所有的数据-->双引号的字符串
# # # 如 s = 'hello ---->"hello"------>'"hello"'
# # # 注意与json.dump()区别,json.dump()将转化的数据通过json内置处理直接写入到文件中,
# # # 而dumps操作是先将数据转化为json数据,在通过文件的处理方法,之后再再将数据写入到文件中,
# # # 使用上,json.dumps()为常用
# # # json.dump()----->>>见下面实例???
# ------------------------------------------------------------
# ------------------------------------------------------------
# # 3、json.loads()
# # # json.loads(): 对数据进行解码。
# # # 实现对数据从json格式中,还原为原来的格式
# # # 注意与json.load()区别,使用上,json.loads()为常用,具体的与上面的序列2的类似
# ------------------------------------------------------------
# ------------------------------------------------------------
# # 4、json.dumps与json.loads 在文件传输中的应用
# # # 通过jason方法,实现在写入文件的数据进行还原
# ------------------------------------------------------------
# ------------------------------------------------------------
# # 5、json.dump与json.load 在文件传输中的应用
# # # 这个与dumps、loads的区别就,是这个是直接读取文件的内容并实现json转码,步聚是合在一起的
# ------------------------------------------------------------
# ------------------------------------------------------------
# # 6、json.dumps与json.loads 的一些补充
# # # json.dumps与json.loads 不一定需要搭配使用,只要他们文件中保存的数据满足json读取到的
# # # 格式就是可了
# # # 即,文件储存的时候的编码不一定需要使用json.dumps来编码,只要格式满足json格式,读取
# # # 一样可以通过json.loads来解码读取
# ------------------------------------------------------------
'''
'''
# ------------------------------------------------------------
# # 0、json概述
# # # JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。
# # # Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:
# # # json.dumps(): 对数据进行编码。
# # # json.loads(): 对数据进行解码。
# # # Python3 JSON 数据解析 | 菜鸟教程
# # # http://www.runoob.com/python3/python3-json.html
# # # 作用: 可以实现跨平台实现数据的传输,不不仅仅是在python之间,可以在多个语言平台之间实现数据传输
# # # 也因此,在数据传输的编码与解码上,经常通过json来进行,而pickle的使用率会低下一些
# ------------------------------------------------------------
------------------------------------------------分割线-------------------------------------------------
------------------------------------------------分割线-------------------------------------------------
------------------------------------------------分割线-------------------------------------------------
''' # ------------------------------------------------------------ # # 1、不用jason方法实现在写入文件的数据进行还原 # # # 使用json方法见4 # ------------------------------------------------------------ ''' # # # 写入到文件中 # print("写入部份".center(50,"-")) # dic = {"name":"alex", # 'sex':'male'} # f = open("hello","w") # # dic需要转化为字符串,才能存储到系统中 # dic_s = str(dic) # print(dic_s,type(dic_s)) # f.write(dic_s) # # # 如果不关闭,刚刚写入的数据还放在内存中,还没有写进去,导致下面读取到的数据是“空” # # f.close() # # 如果不用上面的关闭操作,可以将在内存中的文件流通到flush操作刷入内存中,下面就可以读取到数据了 # f.flush() # # print("读取部份".center(50,"-")) # # 将刚刚写入的数据读取出来 # f_read = open("hello","r") # data = f_read.read() # print(data,type(data)) # # print("还原为字典".center(50,"-")) # data = eval(data) # print(data,type(data)) # # # D:Anaconda3python.exe D:/C_cache/py/day22_os_json_re_etc_MoKuai/day22_3-json.py # # -----------------------写入部份----------------------- # # {'name': 'alex', 'sex': 'male'} <class 'str'> # # -----------------------读取部份----------------------- # # {'name': 'alex', 'sex': 'male'} <class 'str'> # # ----------------------还原为字典----------------------- # # {'name': 'alex', 'sex': 'male'} <class 'dict'> # # # # Process finished with exit code 0 ''' # ------------------------------------------------------------ # # 2、json.dumps() # # # json.dumps(): 对数据进行编码。 # # # 需要注意的是:json的dumps会数据进行统一化处理,所有的数据-->双引号的字符串 # # # 如 s = 'hello ---->"hello"------>'"hello"' # # # 注意与json.dump()区别,json.dump()将转化的数据通过json内置处理直接写入到文件中, # # # 而dumps操作是先将数据转化为json数据,在通过文件的处理方法,之后再再将数据写入到文件中, # # # 使用上,json.dumps()为常用 # # # json.dump()----->>>见下面实例??? # ------------------------------------------------------------ ''' # import json # dic = {"name":"alex", # 'sex':'male'} # ---->{"name":"alex"}----->'{"name":"alex"}' # i = 8 # ---->'8' # s = 'hello' # ---->"hello"------>'"hello"' # l = [11,22,"??"] # ---->"[11,22]" # # dic_jason = json.dumps(dic) # i_jason = json.dumps(i) # s_jason = json.dumps(s) # l_jason = json.dumps(l) # print("字典: ",dic_jason,type(dic_jason)) # print("整数: ",i_jason,type(i_jason)) # print("字符串:",s_jason,type(s_jason)) # print("列表: ",l_jason,type(l_jason)) # # # D:Anaconda3python.exe D:/C_cache/py/day22_os_json_re_etc_MoKuai/day22_3-json.py # # 字典: {"name": "alex", "sex": "male"} <class 'str'> # # 整数: 8 <class 'str'> # # 字符串: "hello" <class 'str'> # # 列表: [11, 22, "??"] <class 'str'> # # # # Process finished with exit code 0 ''' # ------------------------------------------------------------ # # 3、json.loads() # # # json.loads(): 对数据进行解码。 # # # 实现对数据从json格式中,还原为原来的格式 # # # 注意与json.load()区别,使用上,json.loads()为常用,具体的与上面的序列2的类似 # ------------------------------------------------------------ ''' # # import json # dic = {"name":"alex", # 'sex':'male'} # ---->{"name":"alex"}----->'{"name":"alex"}' # i = 8 # ---->'8' # s = 'hello' # ---->"hello"------>'"hello"' # l = [11,22,"??"] # ---->"[11,22]" # # dic_jason = json.dumps(dic) # i_jason = json.dumps(i) # s_jason = json.dumps(s) # l_jason = json.dumps(l) # # print("json.dumps数据编码部分".center(50,"-")) # print("字典: ",dic_jason,type(dic_jason)) # print("整数: ",i_jason,type(i_jason)) # print("字符串:",s_jason,type(s_jason)) # print("列表: ",l_jason,type(l_jason)) # # dic_loads = json.loads(dic_jason) # i_loads = json.loads(i_jason) # s_loads = json.loads(s_jason) # l_loads = json.loads(l_jason) # # print("json.loads数据解码部分".center(50,"-")) # print("字典: ",dic_loads,type(dic_loads)) # print("整数: ",i_loads,type(i_loads)) # print("字符串:",s_loads,type(s_loads)) # print("列表: ",l_loads,type(l_loads)) # # # # D:Anaconda3python.exe D:/C_cache/py/day22_os_json_re_etc_MoKuai/day22_3-json.py # # -----------------json.dumps数据编码部分----------------- # # 字典: {"name": "alex", "sex": "male"} <class 'str'> # # 整数: 8 <class 'str'> # # 字符串: "hello" <class 'str'> # # 列表: [11, 22, "??"] <class 'str'> # # -----------------json.loads数据解码部分----------------- # # 字典: {'name': 'alex', 'sex': 'male'} <class 'dict'> # # 整数: 8 <class 'int'> # # 字符串: hello <class 'str'> # # 列表: [11, 22, '??'] <class 'list'> # # # # Process finished with exit code 0 ''' # ------------------------------------------------------------ # # 4、json.dumps与json.loads 在文件传输中的应用 # # # 通过jason方法,实现在写入文件的数据进行还原 # ------------------------------------------------------------ ''' # # import json # # # 写入到文件中 # print("写入部份".center(50,"-")) # dic = {"name":"alex", # 'sex':'male'} # f = open("hello","w") # # dic需要转化为字符串,才能存储到系统中 这里的编码与“上面序列1”中的区别 # dic_s = json.dumps(dic) # print(dic_s,type(dic_s)) # f.write(dic_s) # # # 如果不关闭,刚刚写入的数据还放在内存中,还没有写进去,导致下面读取到的数据是“空” # # f.close() # # 如果不用上面的关闭操作,可以将在内存中的文件流通到flush操作刷入内存中,下面就可以读取到数据了 # f.flush() # # print("读取部份".center(50,"-")) # # 将刚刚写入的数据读取出来 # f_read = open("hello","r") # data = f_read.read() # print(data,type(data)) # # print("还原为字典".center(50,"-")) # data = json.loads(data) # print(data,type(data)) # # # D:Anaconda3python.exe D:/C_cache/py/day22_os_json_re_etc_MoKuai/day22_3-json.py # # -----------------------写入部份----------------------- # # {"name": "alex", "sex": "male"} <class 'str'> # # -----------------------读取部份----------------------- # # {"name": "alex", "sex": "male"} <class 'str'> # # ----------------------还原为字典----------------------- # # {'name': 'alex', 'sex': 'male'} <class 'dict'> # # # # Process finished with exit code 0 ''' # ------------------------------------------------------------ # # 5、json.dump与json.load 在文件传输中的应用 # # # 这个与dumps、loads的区别就,是这个是直接读取文件的内容并实现json转码,步聚是合在一起的 # ------------------------------------------------------------ ''' # # import json # # print("写入部份".center(50,"-")) # dic = {"name":"alex", # 'sex':'male'} # f = open("hello","w") # # json编码并且写到文件内 # print(json.dump(dic,f),"写入完成" ) # # # 如果不关闭,刚刚写入的数据还放在内存中,还没有写进去,导致下面读取到的数据是“空” # # f.close() # # 如果不用上面的关闭操作,可以将在内存中的文件流通到flush操作刷入内存中,下面就可以读取到数据了 # f.flush() # # print("还原为字典".center(50,"-")) # f_read = open("hello","r") # data = json.load(f_read) # print(data,type(data)) # # # D:Anaconda3python.exe D:/C_cache/py/day22_os_json_re_etc_MoKuai/day22_3-json.py # # -----------------------写入部份----------------------- # # None 写入完成 # # # # ----------------------还原为字典----------------------- # # {'name': 'alex', 'sex': 'male'} <class 'dict'> # # # # Process finished with exit code 0 # 06 # 06 # 06 ''' # ------------------------------------------------------------ # # 6、json.dumps与json.loads 的一些补充 # # # json.dumps与json.loads 不一定需要搭配使用,只要他们文件中保存的数据满足json读取到的 # # # 格式就是可了 # # # 即,文件储存的时候的编码不一定需要使用json.dumps来编码,只要格式满足json格式,读取 # # # 一样可以通过json.loads来解码读取 # ------------------------------------------------------------ ''' # import json # with open ("a","r") as f: # data = f.read() # print(data,type(data)) # data = json.loads(data) # 文件中的内容满足json格式内容 # print(data["name"]) # print(data, type(data)) # # # D:Anaconda3python.exe D:/C_cache/py/day22_os_json_re_etc_MoKuai/day22_3-json.py # # {"name":"alvin"} <class 'str'> # # alvin # # {'name': 'alvin'} <class 'dict'> # # # # Process finished with exit code 0