JSON(javasacript object notation):是一种存储和交换数据的语法。本质就是字符串,json数据是在语言里面使用的。
JSON对象:他的意思就是一组键值对的数据对象。
JSON优点:
1、数据格式简单,易于读写,格式都是压缩的,占用带宽小。
2、已与解析这种语言,客户端JavaScript可以简单的通过eval_r()进行JSON数据读取
3、支持多种语言,包括c,c++,java,javascript,perl,PHP,python等。
4、在PHP(Hypertext Preprocessor,超文本预处理器)世界,已经存在PHP-JSON\JSON-PHP便于PHP序列化后的程序直接调用PHP复渠段的对象、数组,能够直接生成JSON格式。
5、JSON格式能够直接为服务器端代码使用,简化了服务器端和客户端的代码开发,而且完成的任务不变,易于维护。
JSON缺点:
1、推广不足,较XML格式,使用少,通用性差
2、JSON格式在Web Service中推广还属于初级阶段
JSON语法规则
1、数据以,"键值":"数据" 格式存储(这里类似字典)
2、数据之间用逗号隔开
3、花括号保存对象
4、方括号保存数组
#JSON example
[
{
"djsk": "周一",
"dsad": "周二",
"dsf": "null",
"fgd": "1hsd093",
"fvd": "dsjk9823",
"dgfd": "True",
},
{
"djsk1": ["周一1","zhoue"],
"dsad1": "周二1",
"dsf1": "null",
"fgd1": 18,
"fvd1": "dsjkx9823",
"dgfd1": "True",
}
]
#简单嵌套逻辑,如果拿到一个json文件,首先要解析它的结构,可以借助工具Dbeaver了解json文件内部的复#杂嵌套结构
JSON中 值的基础数据类型:数字、字符串、布尔值
注意事项:
1)JSON中没有undefined
2)JSON中,对象属性名,必须用双引号括起来;值的数据类型是字符串时,也需要用双引号
3)JSON中不能有注释
JSON语法
方法 | 作用 |
json.dumps() | 将pyhton对象编程为json字符串 |
json.loads() | 将json字符串解码成python对象 |
json.dump() | 将python中的对象,转化成json存储到文件中 |
json.load() | 将文件中的json的格式转化成pyhton对象提取出来 |
json.dump()和json.dumps()的区别
json.dumps()是把python对象转换成json对象的一个过程,生成的是字符串
json.dump()是把python对象转换成json对象生成一个fp的文件流,和文件有关
##-----json.dumps()---
import json
x = {'name':'无名','age':19,'city':'地球'}
#用dumps将python编码成json字符串
print(json.dumps(x))
#输出:{"name":"\某种编码\","age":19,"city":"\某种编码\"}
#注意:python转json后,字符串都是用双引号包围
##------json.dump()----
#数据存入json文件
import json
numbers = [1,2,3,4,5,6]
filename = 'numberjson'
with open(filename,'w') as f_obj:
json.dump(numbers,f_obj)
json.dumps()参数
json.dumps(obj, shipkeys = False, ensure_ascii = True, allow_nan = True, cls = None,
indent = None, separators = None, encoding = "utf-8", default = None, sort_keys = False, **kw)
参数列表
参数名称 | 解释 |
obj | 要转化成json的对象 |
shipkeys | 默认值是Flase。如果dict的keys内地数据不是python的基本类型,会报错;如果将参数设置为True,则会体哦爱国这类key |
ensure_ascii | 默认输出ASCLL码,如果将这个参数设置成False,就可以输出中文 |
check_circular | False:跳过对容器类型的循环检查,循环引用会导致溢出错误 |
allow_nan | False:ValueError将序列化超出范围的浮点值(nan,inf,-inf)严格遵守JSON规范 |
cls | |
indent | 参数根据数据格式缩进显示。<层次化输出1> |
separator | 分隔符,不同dict项之间的分隔符、dict项内key和value之间的分隔符 去除:和 ,后面的空格 |
encoding | |
default | 返回一个可序列化的obj版本或者引发类型错误。默认值指挥引发类型错误 |
sort_keys | 告诉编码器,按照字典排序(a-z)输出。如果是字典类型的python对象,就把关键字按照字典排序。< 有序输出> |
json.dump()参数
json.dumps(obj, fp, shipkeys = False, ensure_ascii = True, allow_nan = True, cls = None,
indent = None, separators = None, encoding = "utf-8", default = None, sort_keys = False, **kw)
相比于dumps,多了一个fp文件操作
json.load()和json.loads()的区别
json.loads()是针对内存对象,将字符串转化为字典
json.load()是针对文件句柄,将json格式的字符串转换成字典,从文件中读取读取
#将json转pathon 关键字 loads
import json
username = input('存储输入多数据')
json.loads(username)
#json转python并存储在文件中 关键字 load
import json
filename = 'num.json'
with open(filename) as f_obj:
data = json.loads(f_obj)
#json.loads()函数接受有效字符串作为输入,并及那个其转换为pyton字典