目录
JSON数据学习
1.数据交换
网站后台代码的数据,如何传到前端网页?
答:通过数据库
不同语言平台的程序,如何实现数据传输?
答:可以通过设定一种中间格式json ,java与python都可以转化这个格式。
2.json语法:
1). 什么是json?
Json使用键值对的方式表示一个业务对象(类似于字典)。
{"键1":"值1","键2":"值2","键3":"值3"....} 多个业务对象使用 列表[ ]包含:[{…},{…},{…},{…},…]
import json5 ,我这个是json5版本
2).json的库函数:
方法 | 作用 |
---|---|
json.dumps() | 将python对象编码成Json字符串 |
json.loads() | 将Json字符串解码成python对象 |
json.dump() | 将python中的对象转化成json储存到文件中 |
json.load() | 将文件中的json的格式转化成python对象提取出来 |
3).dumps()与dump()以及loads()与load()函数之间的差别:
下面是dumps()与loads() 的使用:
#1.json转python(转成字典或者列表嵌套字典)
jsonData='{"name": "zhangsan" , "age":18,"hobby" : "play"}'
pythonData=json5.loads(jsonData) #load方法
print(pythonData)
结果是:
{'name': 'zhangsan', 'age': 18, 'hobby': 'play'}
#ensure_ascii=True:默认输出ASCLL码,如果把这个该成False,就可以输出中文。
pdata='{"name":"zzz","play":"跑步"}'
jsond=json5.dumps(pdata,ensure_ascii=False)
print(jsond,type(pdata))
结果是:
"{\"name\":\"zzz\",\"play\":\"跑步\"}" <class 'str'>
4). Json来模拟以下数据库,文本文档当作数据库:
首先往文本文档中写数据:
#写数据
with open (r"user.txt","w") as f:
users='[{"uname": "zhangsan", "upwd": "123"}, {"uname": "lisi", "upwd": "123"}, ' \
'{"uname": "wangwu", "upwd": "123"}, {"uname": "大宝", "upwd": "234"}]'
f.write(users)
读文件并实现一个登录:
import json5
def readd():
with open(r"user.txt","r") as f:
jsond=f.read()
userlist=json5.loads(jsond)
return userlist
def login():
msg="失败"
name=input("请输入用户名:")
password=input("请输入密码:")
userlist=readd()
for user in userlist:
if name==user['uname'] and password ==user['upwd']:
msg="成功"
print("恭喜登录成功")
if msg=="失败" :
print("登录失败")
return msg
if __name__=='__main__':
login()
比上一个完整一下(读写以及其他操作,就当复习了)没有实现修改到文本文档中。
import json5
#读数据
def readd():
with open(r"user.txt","r") as f:
jsond=f.read()
userlist=json5.loads(jsond)
return userlist
#写数据(修改)
def writedata(xgname):
userlist = readd()
for user in userlist:
if xgname== user['uname']:
print(user)
user["upwd"]=input("请输入你要修改得密码:")
print(userlist)
else:
pass
def login():
msg = "失败"
name = input("请输入用户名:")
password = input("请输入密码:")
userlist = readd()
for user in userlist:
if name == user['uname'] and password == user['upwd']:
msg = "成功"
print("恭喜登录成功")
if msg == "失败":
print("登录失败")
return msg,name
def main1():
choice1=int(input("0代表登录,1代表创建新用户,其他任意键为退出:"))
if choice1 ==0:
msg,name=login()
if msg=="成功":
print("开始你的使用")
choice2 = int(input("如果修改密码请按1:"))
if choice2==1:
writedata(name)
elif choice1==1:
reg()
else:
exit()
def reg():
name=input("请输入新的用户:")
password=input("请输入密码:")
newuser={"uname":name,"upwd":password}
userlist=readd()
userlist.append(newuser)
print(userlist)
if __name__=='__main__':
main1()
借鉴资源:(53条消息) python的JSON用法——dumps的各种参数用法(详细)_爱吃草莓蛋糕的猴的博客-CSDN博客_json.dump参数