从基础到进阶带你玩转Python中的JSON

 更新时间:2024年12月15日 09:45:43   作者:PythonFun  
JSON是一种轻量级的数据交换格式,在Python中处理JSON数据是日常开发中的常见任务之一,本文将详细介绍如何在Python中处理JSON对象,需要的可以参考下

在Python中处理JSON数据是日常开发中的常见任务之一。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,在Web开发、数据存储等多个领域得到了广泛应用。本文将详细介绍如何在Python中处理JSON对象,包括基础操作、数据操作、高级操作、文件与目录操作、性能优化等内容,并通过具体的代码示例展示不同场景下的应用。

一、基础操作

1. 将Python对象转换为JSON字符串

在Python中,我们可以使用json模块将Python对象(如字典、列表等)转换为JSON格式字符串。此操作常用于将数据准备好传输到Web服务或保存为JSON文件。

import json
# Python字典
person = {
    'name': '刘杰',
    'age': 29,
    'city': '上海'
}
# 将Python字典转换为JSON字符串
json_string = json.dumps(person, ensure_ascii=False)
print("Python对象转换为JSON字符串:")
print(json_string)

在这段代码中,我们将一个名为person的字典转换为JSON字符串。ensure_ascii=False确保了非ASCII字符(如中文)能够正常显示。

2. 将JSON字符串解析为Python对象

解析JSON字符串为Python对象是常见的操作,特别是在处理从Web接口或文件中获取的JSON数据时。

# JSON字符串
json_string = '{"name": "陈辉", "age": 34, "city": "北京"}'
# 将JSON字符串解析为Python字典
data = json.loads(json_string)
print("JSON字符串解析为Python对象:")
print(data)

这段代码展示了如何将JSON字符串转换为Python字典对象,方便后续处理。

3. 将Python对象写入JSON文件

将Python对象保存为JSON文件,通常用于数据存储或共享。

# Python字典
person = {
    'name': '孙洋',
    'age': 25,
    'city': '成都'
}
# 将Python字典写入JSON文件
with open('person_data.json', 'w', encoding='utf-8') as f:
    json.dump(person, f, ensure_ascii=False)
print("已将Python对象写入JSON文件")

以上代码将一个字典写入到名为person_data.json的文件中。

4. 从JSON文件读取Python对象

读取存储在文件中的JSON数据,并将其解析为Python对象。

# 从JSON文件读取Python字典
with open('person_data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)
print("已从JSON文件读取Python对象:")
print(data)

这段代码展示了如何读取一个JSON文件并将其解析为Python字典。

二、数据操作

1. 修改JSON文件中的数据

有时我们需要修改JSON文件中的数据。以下示例演示了如何读取文件、修改数据并将其写回文件。

# 从JSON文件读取Python字典
with open('person_data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)
# 修改数据
data['age'] = 30
# 将修改后的数据写回JSON文件
with open('person_data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False)
print("已修改JSON文件中的数据并保存")

2. 合并两个JSON文件

如果需要合并两个JSON文件的数据,可以先读取两个文件,然后将其内容合并,最后写入到一个新文件中。

# 读取第一个JSON文件
with open('file1.json', 'r', encoding='utf-8') as f:
    data1 = json.load(f)
# 读取第二个JSON文件
with open('file2.json', 'r', encoding='utf-8') as f:
    data2 = json.load(f)
# 合并两个字典
combined_data = {**data1, **data2}
# 将合并后的数据写入新的JSON文件
with open('combined_data.json', 'w', encoding='utf-8') as f:
    json.dump(combined_data, f, ensure_ascii=False)
print("已合并两个JSON文件并保存")

3. 添加新键值对

在现有的JSON数据中添加新的键值对。

# 从JSON文件读取Python字典
with open('person_data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)
# 添加新键值对
data['job'] = '程序员'
# 将更新后的数据写回JSON文件
with open('person_data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False)
print("已添加新键值对并保存")

4. 删除键值对

如果需要从JSON数据中删除某个键值对,可以使用del语句。

# 从JSON文件读取Python字典
with open('person_data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)
# 删除键值对
del data['city']
# 将更新后的数据写回JSON文件
with open('person_data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False)
print("已删除键值对并保存")

三、高级操作

1. 格式化输出JSON字符串

如果需要将JSON字符串以更易读的格式输出,可以使用indent参数来格式化输出。

# Python字典
person = {
    'name': '吴浩',
    'age': 24,
    'city': '厦门'
}
# 格式化输出JSON字符串
json_string = json.dumps(person, indent=4, ensure_ascii=False)
print("格式化输出JSON字符串:")
print(json_string)

2. 处理嵌套JSON结构

在JSON中,嵌套结构非常常见。我们可以处理这样的结构并将其转换为JSON字符串。

# 嵌套的Python字典
nested_person = {
    'name': '赵强',
    'details': {
        'age': 30,
        'city': '武汉'
    }
}
# 将嵌套的Python字典转换为JSON字符串
json_string = json.dumps(nested_person, ensure_ascii=False)
print("嵌套JSON结构转换为JSON字符串:")
print(json_string)

四、学后总结

在处理JSON数据时,Python的json模块提供了许多方便的功能,涵盖了从简单的对象转换到复杂嵌套结构的解析。通过本教程中的示例,你可以灵活地使用Python对JSON数据进行转换、存储、修改、合并等操作。

在处理json格式数据时要注意以下事项:

1. 在处理包含非ASCII字符(如中文)的JSON时,建议使用ensure_ascii=False,否则可能会遇到字符编码问题。

2. 当操作文件时,请确保文件路径正确,并在操作完成后及时关闭文件,避免文件损坏。

3. 在合并多个JSON文件时,确保数据结构一致,以避免数据覆盖或丢失。

4. 通过掌握这些技巧,你将能更高效地在Python项目中使用JSON数据进行各种操作。

到此这篇关于从基础到进阶带你玩转Python中的JSON的文章就介绍到这了,更多相关Python JSON内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python多线程方法详解

    python多线程方法详解

    大家好,本篇文章主要讲的是python多线程方法详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • python实现布尔型盲注的示例代码

    python实现布尔型盲注的示例代码

    这篇文章主要介绍了python实现sql布尔盲注的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Django中更新多个对象数据与删除对象的方法

    Django中更新多个对象数据与删除对象的方法

    这篇文章主要介绍了Django中更新多个对象数据与删除对象的方法,Django是Python重多各色框架中人气最高的一个,需要的朋友可以参考下
    2015-07-07
  • 对dataframe进行列相加,行相加的实例

    对dataframe进行列相加,行相加的实例

    今天小编就为大家分享一篇对dataframe进行列相加,行相加的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python模块/包/库安装的六种方法及区别

    Python模块/包/库安装的六种方法及区别

    这篇文章主要介绍了Python模块/包/库安装六种方法,通过实例代码给大家介绍了python中模块、包、库的区别和使用,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 使用Python读取json文件的方法小结

    使用Python读取json文件的方法小结

    这篇文章主要给大家介绍了Python读取json文件的方法,使用python读取json文件,输出结果为字符串或python对象,文中有详细的代码示例和图解,感兴趣的小伙伴可以自己动手试一试
    2023-09-09
  • matlab输出数据为excel文件的问题

    matlab输出数据为excel文件的问题

    这篇文章主要介绍了matlab输出数据为excel文件的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 3个适合新手练习的python小游戏

    3个适合新手练习的python小游戏

    这篇文章主要分析的是3个适合新手练习的python小游戏,初学者嘛就应该多练手,下文分享的python小游戏欢迎大家来玩,需要的小伙伴也可以参考一下
    2022-01-01
  • Python 通过截图匹配原图中的位置(opencv)实例

    Python 通过截图匹配原图中的位置(opencv)实例

    今天小编就为大家分享一篇Python 通过截图匹配原图中的位置(opencv)实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python根据json数据画疫情分布地图的详细代码

    python根据json数据画疫情分布地图的详细代码

    这篇文章主要介绍了python根据json数据画疫情分布地图的详细代码,掌握使用pyecharts构建基础的全国地图可视化图表,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-12-12

最新评论