json是ajax前戏,在前后端传输数据都要用到json
json是一种轻量级的数据交换格式,
(JavaScript Objects Notation ,js对象标记),与JavaScript有关,
独立于编程语言的文本格式来存储和表示数据,
json.dumps()序列化得到字符串,放到磁盘里,
python支持的数据类型, int,str,list,tuple,dict,set
在python中单引号,与双引号没有区别
在json中数据格式,都是双引号,
info = {'name':'gu ','age':10}
print(type(info))#<class 'dict'>
import json
ret=json.dumps(info)
print(type(ret))#<class 'str'>
print(ret)#{"name": "gu ", "age": 10}
把序列化的数据写到文件里,json.dumps() 得到的都是字符串,
#把序列化的数据写到文件里,文件名就是info.txt
f=open('info.txt','w')
data=f.write(ret)#把序列化的ret文件存到文件里
f.close()
在磁盘中就有info.txt
从磁盘的文件中读取json格式的数据,
#从磁盘中读取json格式的文件
f=open('info.txt')#读取文件,
data=f.read()#得到数据json格式的数据
dict = json.loads(data)#从json格式的数据反序列化得到python格式的数据,前提,是要反序列的数据必须是json格式,双引号才行,
print(dict['name'])#gu
----
json对象和json字符串。
json对象就是JavaScript对象的一个子集,
js的数据类型有,null,number ,str,undefind,array(数组),data,bool, { “”:“”}
json 里有null(空),number,string,bool,array,{ “”:“”}
再json中只认 双引号的字符串 ,
总结: json字符串就是js对象加上双引号,
为什么要单列出json数据类型,在web应用, 前后端数据交换,后端是python语言,前端是js数据,就涉及到数据交换,或者,python语言与java语言交流,都要用json数据格式来交换,都用json字符串,
------
stringify 与parse方法
json.parse(“json字符串”),把一个json字符串反序列为javascript对象,在前端里用,
在前端html 文件中,console.log(JSON.parse('{"name":"egon"}')); 得到一个object,name:egon
json.stringify(js对象),把JavaScript值序列化为json字符串,在后端使用
console.log(json.stringify([11,22,33])) 得到一个string类型,
console.log(JSON.stringify({'name':"egon"}))); 把不符合条件的先转化为符合条件的json格式
console.log(JSON.stringify(typeof{"name":"egon"}));
----
xml 数据格式
在2001年以前数据交换是用xml的,
xml和json都使用结构化方法来标记数据,
在xml有节点,节点套节点,还可以收起来, ,类似于HTML的结构存数据
json类似于 用字典的格式存数据,
json没有xml结构清晰,
在数据交换,json的代码量更小,xml在数据量大的时候代码量非常大,
在线格式代码的工具,bejson,sojson ,可以把乱了的json数据格式格式化整齐的代码,层级结构就清晰了,
www.bejson.com
json数据格式,代码量少,易读,
在ajax就要用到json,
ajax 异步JavaScript和xml,(Asynchronous javas and xml)