Python之json模块

Python之json模块

一、JSON简介

概述:

JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。

特点:

json独立于语言 json具有自我描述性,更加理解 json比xml更小、更快、更易理解
爬虫经常会获取接口数据,接口数据就是json格式

语法格式:

{key:value1, key2:value2} 键值对形式

格式1:JSON 对象

对象是一个无序的“‘名称/值’对”集合。一个对象以{左括号开始,}右括号结束。每个“名称”后跟一个:冒号;“‘名称/值’ 对”之间使用,逗号分隔。

{"name": "小李", "sex":}
格式2:JSON 数组

和普通的 JS 数组一样,JSON 表示数组的方式也是使用方括号 []。

{
    "student":
        [
            {"name": "小李", "sex": "男"},
            {"name": "小丽", "sex": "女"},
            {"name": "小王", "sex": "男"}
        ]
}

注意事项:

  • json的键值对的键部分,必须用双引号包裹,单引号都不行(所以如果在键中出现了关键字,也被字符化了),而js中对象没有强制要求(所以在键中不允许出现关键字)。
  • json的键值对的值部分,不允许出现函数function,undefined,NaN,但是可以有null,js中对象的值中可以出现。
  • json数据结束后,不允许出现没有意义的逗号

二、json模块

json模块是python内置的库,在使用的时候直接导入就可以。
json模块的操作使用相对较为简单,该模块只有四个方法dump()、load()、dumps()、loads()。

作用:

json模块的主要功能是将序列化数据从文件里读取出来或者存入文件。其中dump()是将数据存入文件中,load()是用于读取文件。而dumps()和loads()是对python对象进行操作。dumps()是将python对象编码成json字符串。loads()是将json字符串解码成python对象。

方法:

(1) json.dumps()

将python数据类型转换为json格式的字符串

 import json

# Python字典

 person = {"name": "小李", "sex": "男", "tel": ["8234588", "1244351"], "isonly": True}
 print(person)
 print(type(person))

# Python字典转换为json字符串

 jsonStr = json.dumps(person)
 print(jsonStr)
 print(type(jsonStr))

写入文件的方式:

写入文件的方式:

import json

person = {"name": "小李", "sex": "男", "tel": ["8234588", "1244351"], "isonly": True}

jsonStr = json.dumps(person)

# 打开文件   在文件里写入转成的json串

with open('test.json', 'w', encoding='utf-8') as f:  
	f.write(jsonStr)  
(2) json.dump()

将python数据类型转换并保存到json格式文件内

 import json
 person = {"name": "小李", "sex": "男", "tel": ["8234588", "1244351"], "isonly": True}
 json.dump(person, open('data.json', 'w'), sort_keys=True, indent=4, separators=(',', ': '))

参数:

sort_keys: 是否排序 indent: 定义缩进距离
separators: 是一个元组,定义分隔符的类型
skipkeys:是否允许json字串编码字典对象时 字典的key不是字符串类型
json.dumps和json.dump的区别:

jump()不需要使用.write()方法,只需要写那个字典,那个文件即可; 而 dumps()需要使用.write()方法写入
如果把字典写到文件里面的时候,dump()好用;但是如果不需要操作文件,或需要把内容存储到数据库和excel,则需要使用dumps()先把字典转换成字符串,再写入

(3) json.loads()

将json格式的字符串转换为python的类型

import json

# Python字典

person = {"name": "小李", "sex": "男", "tel": ["8234588", "1244351"], "isonly": True}
print(person)
print(type(person))

# Python字典转换为json字符串

jsonStr = json.dumps(person)
print(jsonStr)
print(type(jsonStr))

# json字符串再转换为Python字典

python_obj = json.loads(jsonStr)
print(python_obj)
print(type(python_obj))

文件操作

import json

f = open('data.json', encoding='utf-8')
content = f.read()  # 使用loads()方法需要先读文件
python_obj = json.loads(content)
print(python_obj)
(4) json.load()

从json格式的文件中读取数据并转换为python的类型

import json

python_obj = json.load(open('data.json','r'))
print(python_obj)
print(type(python_obj))

json.load和json.loads()的区别

loads() 传的是json字符串,而 load() 传的是文件对象
使用 loads() 时需要先读取文件在使用,而load() 则不用
json模块就是用来读写数据的,用法也很简单,需要掌握的也不多。

《AUTOSAR谱系分解(ETAS工具链)》之总目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值