JSON基础
什么是JSON?
1.JSON是指JavaScript对象表示法(JavaScript Object Notation)
2.JSONS是轻量级的文本数据交换格式 (全后端交互)
3.JSON独立于语音 (是不是可也看成正则一样的东西,每一种语言都可也用)
4.JSON具有自我描述性,更易理解
几乎所有编程语言都解析JSON的库,而在JavaScript中,我们可以直接使用JSON,因为JavaScript内置了JSON的解析。把任何JavaScript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能通过网络传递给其他计算机。
如果我们收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScrip对象,就可以在JavaScript中直接使用这个对象了.
序列化
var xiaoming = { name: '小明', age: 14, gender: true, height: 1.65, grade: null, 'middle-school': '\"W3C\" Middle School', skills: ['JavaScript', 'Java', 'Python', 'Lisp'] }; var s = JSON.stringify(xiaoming); console.log(s);
反序列化
拿到一个JSON格式的字符串,我们直接用JSON.parse()把它变成一个JavaScript对象: JSON.parse('[1,2,3,true]'); // [1, 2, 3, true] JSON.parse('{"name":"小明","age":14}'); // Object {name: '小明', age: 14} JSON.parse('true'); // true JSON.parse('123.45'); // 123.45
Python中的json模块如何使用
# -*- coding:utf-8 -*- import json s = '{"name": "小赵", "age": 18}' # 把字符串反序列化成python格式的数据 strs = json.loads(s) print(strs, type(strs)) # 把字典格式序列化成字符串 strs1 = json.dumps(strs) print(strs1, type(strs1)) {'age': 18, 'name': '小赵'} <class 'dict'> {"age": 18, "name": "\u5c0f\u8d75"} <class 'str'>
注意:
合格的JSON对象
["one", "two", "three"] { "one": 1, "two": 2, "three": 3 } {"names": ["张三", "李四"] } [ { "name": "张三"}, {"name": "李四"} ]
不合格的JSON对象
{ name: "张三", 'age': 32 } // 属性名必须使用双引号 [32, 64, 128, 0xFFF] // 不能使用十六进制值 { "name": "张三", "age": undefined } // 不能使用undefined { "name": "张三", "birthday": new Date('Fri, 26 Aug 2011 07:13:10 GMT'), "getName": function() {return this.name;} // 不能使用函数和日期对象 }
总结:
JavaScript中关于JSON对象和字符串转换的两个方法:
JSON.parse(): 用于将一个 JSON 字符串转换为 JavaScript 对象。
JSON.stringify(): 用于将 JavaScript 值转换为 JSON 字符串。
Python中关于JSON对象和字符串的转换方法:
json.loads():用于将一个JSON字符串转换为字典
json.dumps():用于将一个字典转换为一个JSON字符串