什么是 JSON ?
1 JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
2 JSON 是轻量级的文本数据交换格式
3 JSON 独立于语言 *
4 JSON 具有自我描述性,更易理解
5 JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。
相比 XML 的不同之处
1 没有结束标签
2 更短
3 读写的速度更快
4 能够使用内建的 JavaScript eval() 方法进行解析
5 使用数组
6 不使用保留字
为什么使用 JSON?
对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用
JSON 值可以是:
1 数字(整数或浮点数)
2 字符串(在双引号中)
3 逻辑值(true 或 false)
4 数组(在方括号中)
5 对象(在花括号中)
5 null
JSON 对象
JSON 对象在花括号中书写:
对象可以包含多个名称/值对:
{ "firstName":"John" , "lastName":"Doe" }
JSON 数组
JSON 数组在方括号中书写:
数组可包含多个对象:
{ "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ] }
在js中使用json
字符串
var str1 = '{ "name": "cxh", "sex": "man" }';
json对象
var str2 = { "name": "cxh", "sex": "man" };
将json字符串转化为json对象
var obj = eval('(' + str1 + ')');
var obj = JSON.parse(str1);
将jjson对象转化为son字符串
var str = JSON.stringify(str2);
json对象可以这样读取
Alert(obj.name);
在python使用json
使用 JSON 需要导入 json 库:import json
json.dumps使用 将字典类型转化为json字符串
import json t_dict = { "k1":"v1", "k2":"v2", } print(json.dumps(t_dict)) # 字符串格式 {"k1":"v1","k2":"v2"} t_dict = { "k1":"v1", "k2":"好", } print(json.dumps(t_dict)) # 字符串格式 {"k1":"v1","k2":"u597d"} 不过是unicode编码 t_dict = { "k1":"v1", "k2":"好", } print(json.dumps(t_dict, ensure_ascii=False)) # 字符串格式 {"k1":"v1","k2":"好"}
json.loads使用 将字符串转化为字典或元祖类型
import json t_dict = '[{"k1":"v1"},{"k2":"v1"}]' t_c_dict = json.loads(t_dict) print(t_c_dict, type(json.loads(t_dict))) # [{'k1': 'v1'}, {'k2': 'v2'}] <class 'list'> t_dict = '[{"k1":"v1"},{"k2":"好"}]' t_c_dict = json.loads(t_dict) print(t_c_dict, type(json.loads(t_dict))) # [{'k1': 'v1'}, {'k2': '好'}] <class 'list'>
json.dumps使用 用于处理文件类型
import json t_dict = {"k1":"v1","k2":"v2"} with open("data.txt", "w", encoding="utf-8") as f: json.dump(t_dict, f) # data.txt中 {"k1": "v1", "k2": "v2"}
json.loads使用 用于处理文件类型
import json with open("data.txt", "r") as f: t_dict = json.load(f) # t_dict = json.loads(f.read()) # 与上面效果一样 print(t_dict, type(t_dict)) # {'k1': 'v1', 'k2': 'v2'} <class 'dict'>