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

android xml 里面字符串有 java xml字符串_xml

从磁盘的文件中读取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)