一、json是什么
1、JSON(JavaScript Object Notation, JS对象标记)是一种轻量级的数据格式,其数据格式简单,读写方便易懂。
2、许多主流的编程语言都在用它来进行前后端的数据传输,大大的简化了服务器和客户端的开发工作量。相对于 XML 来说,更加的轻量级,更方便解析,因此许多开发者都遵循 Json 格式来进行数据的传输和交换。
3、json 数据格式(是字符串类型):
——对象格式(类似于字典字符串):'{key1: value1, key2: value2, key3: value3}',key必须为字符串,value不做规定
——数组/集合格式(类似于列表字符串):'[dict1, dict2, dict3]',dict必须为字典
二、json有两点规定
1、JSON语言中规定了字符集必须是UTF-8
2、为了统一解析,规定JSON的字符串必须由双引号 " " 界定
三、json格式数据和Python类型的转化
import json
# 1、dumps():将dict类型的数据转化成json格式(str类型)
#——(1)数据中存在中文,加上ensure_ascii=False参数即可显示中文,否则乱码:
dict1 = {'name': "小明", 'age': 18, 'skills': 'python', 'english': 'CET6', 'major': '会计', "address": "深圳", 666: 999}
dict2 = json.dumps(dict1)
dict3 = json.dumps(dict1, ensure_ascii=False)
print(dict1)
print(dict2)
print(dict3)
#——(2)字典转化成json格式后,原字典中的单引号会全部变成双引号,没有引号的键也会加上双引号:
#——(3)对json格式数据通过缩进符美观(多行)输出,使用indent参数:
dict4 = json.dumps(dict1, ensure_ascii=False, indent=2)
dict5 = json.dumps(dict1, ensure_ascii=False, indent=5)
print(dict4)
print(dict5)
#——(4)通过设置sort_keys=True,结果按键进行排序:
dict6 = json.dumps(dict1, ensure_ascii=False, indent=4, sort_keys=True)
print(dict6)
#——(5)使用separators参数来设置键值对之间的分隔符,和键与值之间的分隔符:
dict7 = json.dumps(dict1, ensure_ascii=False, indent=4, separators=("——","@"))
print(dict7)
# 2、dump():将dict类型的数据转化成json格式后写入json文件
with open(r".\test.json", "w", encoding="utf-8") as f:
# json.dump(dic, f) # 全部写入一行数据,不换行
json.dump(dict1, f, indent=2, sort_keys=True, ensure_ascii=False)
# 3、loads():将json格式的数据转化成dict类型,其结果引号全部变为单引号
# 4、load():读取json文件数据,转成dict类型
with open("./test.json", encoding="utf-8") as f:
json_to_dict = json.load(f)
print(json_to_dict)
# 5、元组转化:
data = (1, 2, 3, 4)
data1 = json.dumps(data)
print(data1)
# 6、列表转化:
data = [1, 2, 3, 4]
data2 = json.dumps(data)
print(data2)
# 7、布尔值转化:
data = True
data3 = json.dumps(data)
print(data3)
# 8、数值型数据转化:
data = 5
data4 = json.dumps(data)
print(data4)
四、利用 Demjson 来解析
# Demjson是Python的第三方库,能够用于编码和解码json格式数据,存在py2和py3兼容性问题:
import demjson
#——(1)encode:将 Python 对象编码成 JSON 字符串
data = ["ser",34]
data5 = demjson.encode(data)
#——(2)decode:将已编码的 JSON 字符串解码为 Python 对象
data6 = demjson.decode(data5) # 想看到中文eval(data6)
五、Pandas处理 json
# read_json:从json文件中读取数据
# to_json:将pandas中的数据写入到json文件中
# json_normalize:对json数据进行规范化处理