网站首页 > java教程 正文
前言
Python是一个非常容易上手的编程语言,它的语法简单,而且功能强大,非常适合初学者学习,它的语法规则非常简单,只要按照规则写出代码,Python解释器就可以执行。
下面是Python的入门教程介绍一下Python编程中的JSON操作,非常重要,外婆看完都学会了,你也来看看吧!
什么是JSON?
JSON或JavaScript Object Notation,是一种使用文本存储数据对象的格式。换句话说,它是一种数据结构,将对象用文本形式表示出来。尽管它来源自JavaScript,但它已成为传输对象的实际标准。
Python中的JSON
- Python原生支持JSON数据,Python json模块是标准库的一部分。该json模块可以将JSON数据从JSON格式转换到等效的Python对象,例如dictionary和list,JSON模块还可以将Python对象转换为JSON格式。
- Python的json模块提供编写自定义编码器和解码器功能,无需单独安装。
- Python的json模块提供了四个功能:dumps、dump、loads、load。dumps:将Python对象编码成JSON字符串。dump:将Python对象编码成JSON字符串,并将JSON数据写入文件。loads:将已编码的JSON字符串解码为Python对象。load:从文件中读取JSON数据,并将其解码为Python对象。
- Python的json模块提供了两个类:JSONEncoder和JSONDecoder。JSONEncoder:将Python对象编码成JSON字符串。JSONDecoder:将已编码的JSON字符串解码为Python对象。
- 注意:dumps和loads中的s是字符串的意思。
代码
首相必须导入 json模块,全部的代码如下,大家最好先收藏,后面用的着的,直接拿来用。
import json
# 将json数组转化成list
def jsonListTest():
# 数组
list = '[{"name":"张三","age":20,"interest":["读书","羽毛球"]},{"name":"李四","age":21,"interest":["唱歌","篮球"]}]'
# 转化成json
jsonList = json.loads(list)
print(type(jsonList)) # <class 'list'>
for item in jsonList:
print(item.get("name"))
print(item.get("age"))
print(item.get("interest"))
# 定义Student类
class Student(object):
def __init__(self, name, age, interest):
self.name = name
self.age = age
self.interest = interest
def __str__(self):
return 'Student object (name: {},age: {} interest:{})'.format(self.name, self.age, self.interest)
# 定义编码器StudentEncoder类,继承自json.JSONEncoder,重写default方法,将对象转化成json
class StudentEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, Student):
return {
'name': o.name,
'age': o.age,
'interest': o.interest
}
else:
return json.JSONEncoder.default(self, o)
# 定义解码器StudentDecoder类,继承自json.JSONDecoder,重写object_hook方法,将json转化成对象
class StudentDecoder(json.JSONDecoder):
def __init__(self, object_hook=None, *args, **kwargs):
super().__init__(object_hook=object_hook, *args, **kwargs)
def object_hook(self, d):
return Student(d['name'], d['age'], d['interest'])
# 通过lambda函数,将json数组转化成list对象
def jsonListToObjectTest():
list = '[{"name":"张三","age":20,"interest":["读书","羽毛球"]},{"name":"李四","age":21,"interest":["唱歌","篮球"]}]'
# 转化成json
jsonList = json.loads(list, object_hook=lambda d: Student(d['name'], d['age'], d['interest']))
print(type(jsonList)) # <class 'list'>
for item in jsonList:
print(item)
# 通过自定义解码器,将json数组转化成list对象,对于复杂的对象,可以通过自定义解码器来实现
def jsonListToObjectTest2():
list = '[{"name":"张三","age":20,"interest":["读书","羽毛球"]},{"name":"李四","age":21,"interest":["唱歌","篮球"]}]'
# 转化成json
jsonList = json.loads(list, cls=StudentDecoder)
print(type(jsonList)) # <class 'list'>
for item in jsonList:
print(item)
# 将对象转化成json,并写入文件
def jsonWriteFile():
# 将对象转化成json
s = Student('张三', 20, ['读书', '羽毛球'])
# 将对象转化成json
jsonStr = json.dumps(s, cls=StudentEncoder, ensure_ascii=False)
print(jsonStr)
# 将json写入文件
with open('.\\data\\student.json', 'w', encoding="utf8") as f:
f.write(jsonStr)
# 从文件中读取json,并转化成对象
def jsonReadFromFile():
# 从文件中读取json
with open('.\\data\\student.json', 'r', encoding='utf8') as f:
jsonStr = f.read()
# 将json转化成对象
s = json.loads(jsonStr, cls=StudentDecoder)
print(s)
if __name__ == '__main__':
jsonTest()
jsonListTest()
jsonListToObjectTest()
jsonListToObjectTest2()
jsonWriteFile()
jsonReadFromFile()
结束寄语
恭喜你看完这篇Python教程,你已经超过99%的人了,学习编程一定要系统学习,关注我带你快速入门Python,提高工作效率!
喜欢就关注我给我点个赞吧,精彩内容会第一时间推送给你[心][谢谢]。
有问题可以回复或私信我,看到我会给你耐心解答[给力]!
猜你喜欢
- 2024-12-03 为什么Spring MVC能自动转换json/xml,你研究过它背后的原理吗?
- 2024-12-03 Java 调用第三方接口,实战来了
- 2024-12-03 SpringBoot 默认json解析器详解和字段序列化自定义
- 2024-12-03 下个十年高性能 JSON 库来了:fastjson2
- 2024-12-03 Python数据分析 只要1分钟 教你玩转JSON 全程干货
- 2024-12-03 Jedis存储一个以String形式的对象到Redis
- 2024-12-03 用json写vue前端,更容易让后端接受
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)