之前一直搞不懂这三者的区别,总感觉都是键值对的关系,结合了一些资料,下面是我个人的整理。
其中Javascript中的对象可以包含很多,在其中除了有键值对还可以包含函数,并且其中的键无需加引号,比如:
obj = {
name:'aaa',
age:18,
address:{
city:'nanjing',
function(){
...
}
}
}
而Json字符串,本质是字符串,也以键值对的形式存在,但是注意,Json字符串的键名必须要加入双引号,且里面的内容不能是函数方法,并且最后不允许加入逗号,比如:
json_str = '{
"name":"liuliu",
"age":18
...
}'
在Js中我们可以通过两种方式将js对象转为json字符串,这称为序列化,可以将json字符串转为js对象,这称为反序列化。下图为序列化
js_obj = {
name:'aa', //js对象
age:18
}
js_json = JSON.stringify(js_obj)。//进行序列化,也是专为json字符串
console.log(js_obj)// js对象
console.log(js_json) //json字符串
输出为:
下图为反序列化操作:
json_str = '{"name":"liuliu","age":18}' //json字符串
json_obj = JSON.parse(json_str) //反序列化操作,将json字符串转为js对象
console.log(json_str) // json字符串
console.log(json_obj) // js对象
python中的字典,也是以键值对的形式存在,python中的字典是python的一种数据类型,我们经常所做的操作是将python中的字典转化为json字符串,实现前后端分离的数据通信,其中序列化是指python中的字典中的数据变为json字符串,反序列化是指json字符串中的数据变为python的数据形式。
obj = { # python字典
'name':'aa',
'age':18
}
import json
print(json.dumps(obj)) # 序列化,将字典变为json字符串,方便前后端的通信
print(obj) # python字典
json_str = '{"name":"aa","age":18}' # json字符串
import json
print(json.loads(json_str)) # 反序列化,实现json字符串转为python字典
print(json_str) # json字符串
个人总结:
在JavaScript中,想要实现js对象变为json字符串,利用JSON.stringify(js对象),想要实现json字符串变为js对象,利用JSON.parse(json字符串);
在python中,想要实现python字典变为json字符串,利用json.dumps(字典),想要实现json字符串变为字典,利用json.loads(json字符串),前提要先引入json。