网站首页 > java教程 正文
大家好,我是钢铁老豆!今天我们聊聊一个在数据处理、网络传输中经常遇到的文件格式——JSON。无论是Web开发的前后端小伙伴们,还是人生苦短的Pythoner们,对TA相信都不会陌生。那么,究竟什么是JSON,它的语法是怎样的,又该如何用Python来解析它呢?
0.什么是JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript语言标准ECMA-262 3rd Edition的一个子集。JSON采用完全独立于语言的文本格式,这使得JSON成为理想的数据交换语言。
1.JSON的基本语法
JSON的结构非常简单,整体上可以分为两种类型:
- 对象(Object):对象在JSON中表示为一组键值对,键值对之间用逗号分隔。每个键后面跟一个冒号,冒号后面则是值。整个对象被大括号 {} 包围。Python语言里,我们称之为字典。
{
"name": "钢铁老豆",
"age": 30,
"isProgrammer": true
}
- 数组(Array):数组是值的有序集合,数组中的每个值之间用逗号分隔,整个数组由方括号 [] 包围。Python语言里,我们称之为列表。
["Python", "JavaScript", "Java"]
值的类型
- 字符串:必须用双引号包围。
- 数字:可以是整数或浮点数,不用引号。
- 布尔值:true 或 false。
- 数组:由方括号包围的值的有序列表。
- 对象:由大括号包围的键值对集合。
- null:表示空值。
2.Python如何解析JSON
在Python中,处理JSON数据可以使用内置的json模块。以下是一些常见操作:
读取JSON
import json
# 从JSON字符串读取,返回字典或列表
json_data = '{"name": "钢铁老豆", "age": 30, "isProgrammer": true}'
data = json.loads(json_data)
print(data['name'])
# 从JSON文件读取
with open('example.json', 'r', encoding='utf-8') as file:
data = json.load(file)
print(data['name'])
转换为JSON
import json
# 转换为JSON字符串
data = {
"name": "钢铁老豆",
"age": 30,
"isProgrammer": true
}
json_string = json.dumps(data)
print(json_string)
# 写入JSON文件,配置ensure_ascii=False以正常显示中文字符,配置indent指定缩进使用的空格数
with open('output.json', 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)
自定义序列化
在一些特殊情况下,你可能需要控制某些对象如何被序列化到JSON。例如,你想序列化一个Python的datetime对象,但JSON标准中并没有这种类型。这时可以使用default参数指定一个处理函数:
import json
from datetime import datetime
def default_serializer(obj):
if isinstance(obj, datetime):
return obj.isoformat()
raise TypeError(f'Object of type {obj.__class__.__name__} is not JSON serializable')
now = datetime.now()
data = {
"name": "钢铁老豆",
"timestamp": now
}
json_string = json.dumps(data, default=default_serializer)
print(json_string) # 输出会包含ISO格式的日期时间字符串
这样的处理方法让你能够控制几乎任何自定义类型如何序列化为JSON格式。
好了,以上就是JSON的基本知识和在Python中如何解析它的方法。希望对你有帮助!别忘了,学习不是马拉松,而是享受每一步的过程。如果你觉得这篇文章有用,不妨点个赞支持一下,收藏起来慢慢研究,评论告诉我你的想法,或者关注我,每天学习一点Python小知识,无论基础、模块、数据分析、深度学习和Ai,总有你感兴趣的。我是钢铁老豆,一个30岁转行IT、自学成为算法工程师、想用Ai点亮孩子小小世界的Pythoner。
猜你喜欢
- 2024-10-28 JavaScript获取json中key所对应的value值的简单方法
- 2024-10-28 为什么JSON.parse会损坏大数字,如何解决这个问题?
- 2024-10-28 深入浅出Json-Schema-Validation(深入浅出stm)
- 2024-10-28 这几个JSON 工具,你是不是错过了
- 2024-10-28 深入解析 JSONPath:从入门到精通(jsonpath解析json)
- 2024-10-28 《Servlet》第18节:HttpServletResponse响应JSON和HTML内容
- 2024-10-28 netty系列之:netty中的核心解码器json
- 2024-10-28 Android JSON(android json to room)
- 2024-10-28 一种适合懒人的JSON解析方式(json解析工具哪个好用)
- 2024-10-28 JAVA实现生成多层JSON格式数据(含源码——三层样例)
你 发表评论:
欢迎- 07-15采用Oracle OSB总线进行服务注册和接入
- 07-15javaEE 新闻管理系统 oracle11+tomcat6
- 07-15从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 07-15如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 07-15【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 07-15【mykit-data】 数据库同步工具(数据库表同步工具)
- 07-15[Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- 07-15Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- 最近发表
-
- 采用Oracle OSB总线进行服务注册和接入
- javaEE 新闻管理系统 oracle11+tomcat6
- 从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 【mykit-data】 数据库同步工具(数据库表同步工具)
- [Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- Oracle数据库云服务系列新增前所未有的企业级功能
- 直播预告丨如何实现Oracle存储过程到java的一键转化
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)