一文带你搞懂Python如何解读JSON文件

 更新时间:2026年03月31日 09:25:15   作者:mabley  
这篇文章主要为大家详细介绍了Python中如何读取解析JSON文件,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下

一、JSON格式详解

所有 JSON 数据需要包裹在一个花括号中。

{
    "sites": [
    { "name":"maybe" , "url":"www.maybe.com" }, 
    { "name":"google" , "url":"www.google.com" }
    ]
}
  • Object(对象):键/值对("key":"value")的集合。集合使用花括号{ }定义。多个键/值对之间使用逗号,分隔,例如{"name":"pink","url":"unknown"}
  • Array(数组):值的有序集合,使用方括号[ ]定义,数组中每个值之间使用逗号 ,进行分隔。

1. 基本语法

  • 值可以是数字、字符串、布尔值、数组、对象、null;
  • 键必须是唯一的,不能重复;
  • 不可以使用八进制或十六进制表示数字。
  • 不支持注释
  • 可以嵌套

2. 数据类型

number:JSON 中不区分整型和浮点型。此外,JSON 中不能使用八进制和十六进制表示数字,但可以使用 e 或 E 来表示 10 的指数。

{
    "number_1" : 20,
    "number_2" : -21.5,
    "number_3" : 1.0E+1
}  

value:null 和 true/false

object:JSON 中,对象由花括号{ }以及其中的若干键/值对组成,一个对象中可以包含零个或多个键/值对,每个键/值对之间需要使用逗号,分隔.

{
    "author": {
        "name": "C",
        "description": "C语言"
    }
}

array:JSON 中,数组由方括号[ ]和其中的若干值组成,值可以是 JSON 中支持的任意类型,每个值之间使用逗号,进行分隔。

{
    "course" : [
        "JSON",
        "CSS",
        {
            "ok" : "well",
            "how" : "fine"
        },
        [
            3.1,
            fasle
        ],
        null
    ]
}

二、python

1. 数据文件(data.json)

{
    "employee": {
        "name": "John Doe",
        "age": 35,
        "department": {
            "name": "Engineering",
            "location": "Building A"
        }
    }
}

2.原生python解析

需要导入JSON包进行文件解析。

import json

# 读取 JSON 数据
with open('data/data.json', 'r') as f:
    json_data = f.read()

# 解析 JSON 数据
data = json.loads(json_data)
print(type(data))  # dict

for key, value in data.items():  # 遍历第一层
    print(f"Key: {key}, Value: {value}")
    # 如果值是字典,继续遍历第二层
    if isinstance(value, dict):
        for sub_key, sub_value in value.items():  # 遍历第二层
            print(f"  Sub-key: {sub_key}, Sub-value: {sub_value}")
            # 如果第二层的值还是字典,进一步处理
            if isinstance(sub_value, dict):
                for deep_key, deep_value in sub_value.items():
                    print(f"    Deep-key: {deep_key}, Deep-value: {deep_value}")

3. pandas

需要导入pandas包进行文件解析。

import pandas as pd

path = 'data/data.json'

# 1. 打开并读取 JSON 文件
df = pd.read_json(path)
print(type(df))  # DataFrame

# 2. 按行解析 JSON 数据
x = df.to_dict(orient='records')
print(type(x))  # list ,其中每个元素是一个字典

# 3. 按列解析 JSON 数据
y = df.to_dict(orient='list')
print(type(y))  # dict 类型,其中每个键的值是列表

# 4. 扁平化嵌套的 JSON 数据
x_normalized = pd.json_normalize(x)
print(x_normalized)

# 5. 将 DataFrame 转换为 JSON 格式
json_data = df.to_json()
print(json_data)

# 6. 将 DataFrame 写入 JSON 文件
df.to_json('output.json')

到此这篇关于一文带你搞懂Python如何解读JSON文件的文章就介绍到这了,更多相关Python解读JSON文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python解释器+Shell脚本实现桌面打开软件过程

    Python解释器+Shell脚本实现桌面打开软件过程

    本文介绍了在Ubuntu系统上创建一个模拟Windows可执行文件(.exe)的脚本(.sh),并通过桌面快捷方式实现一键启动,整个过程包括创建脚本、赋予执行权限、创建桌面快捷方式以及运行验证
    2025-12-12
  • PyTorch中的nn.ConvTranspose2d模块详解

    PyTorch中的nn.ConvTranspose2d模块详解

    nn.ConvTranspose2d是PyTorch中用于实现二维转置卷积的模块,广泛应用于生成对抗网络(GANs)和卷积神经网络(CNNs)的解码器中。该模块通过参数如输入输出通道数、卷积核大小、步长、填充等,能控制输出尺寸和避免棋盘效应
    2024-09-09
  • python实时获取外部程序输出结果的方法

    python实时获取外部程序输出结果的方法

    今天小编就为大家分享一篇python实时获取外部程序输出结果的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • django开发post接口简单案例,获取参数值的方法

    django开发post接口简单案例,获取参数值的方法

    今天小编就为大家分享一篇django开发post接口简单案例,获取参数值的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • pandas数据集的端到端处理

    pandas数据集的端到端处理

    今天小编就为大家分享一篇关于pandas数据集的端到端处理,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 报错No module named numpy问题的解决办法

    报错No module named numpy问题的解决办法

    之前安装了Python,后来因为练习使用Python写科学计算的东西,又安装了Anaconda,但是安装Anaconda之后又出现了一个问题,下面这篇文章主要给大家介绍了关于报错No module named numpy问题的解决办法,需要的朋友可以参考下
    2022-08-08
  • Python多行输入程序实例代码及扩展

    Python多行输入程序实例代码及扩展

    我们都知道Python内置方法input只能输入一行内容,我们今天来实现输入多行文本功能,这篇文章主要给大家介绍了关于Python多行输入程序的相关资料,需要的朋友可以参考下
    2022-04-04
  • 12步教你理解Python装饰器

    12步教你理解Python装饰器

    或许你已经用过装饰器,它的使用方式非常简单但理解起来困难(其实真正理解的也很简单),想要理解装饰器,你需要懂点函数式编程的概念,python函数的定义以及函数调用的语法规则等,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Python实现从订阅源下载图片的方法

    Python实现从订阅源下载图片的方法

    这篇文章主要介绍了Python实现从订阅源下载图片的方法,涉及Python采集的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Python中获取13位和10位时间戳的方法

    Python中获取13位和10位时间戳的方法

    这篇文章主要介绍了如何在Python中获取13位和10位时间戳的方法,包括获取当前时间戳、将时间戳转换为可读时间和将日期字符串转换为时间戳,文章还提醒了时间戳的精度、时区问题和跨平台兼容性,并提供了代码示例,需要的朋友可以参考下
    2025-11-11

最新评论