avatar

redh's blog

热爱可抵岁月方长

  • 首页
Home json入门
文章

json入门

Posted 2024-07-29 Updated 2024-07- 29
By redh
26~34 min read

JSON 简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语言的一个子集,但由于其简单易懂和易于解析的特性,已广泛应用于各种编程语言中。JSON格式以纯文本表示,易于人们阅读和编写,同时也易于机器解析和生成。

JSON 格式的基本结构

JSON主要有两种结构:对象(object)和数组(array)。

1. 对象

对象是键值对的无序集合,键是字符串,值可以是任意有效的JSON数据类型。对象用花括号 {} 包围,键和值之间用冒号 : 分隔,键值对之间用逗号 , 分隔。

示例:

{
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

2. 数组

数组是值的有序集合,值之间用逗号 , 分隔。数组用方括号 [] 包围,数组中的每个值可以是任意有效的JSON数据类型。

示例:

[
    "Python",
    "JavaScript",
    "C++"
]

JSON数据类型

JSON支持以下几种数据类型:

  1. 字符串(String):使用双引号 " 包围的文本。
    "Hello, world!"
    
  2. 数值(Number):可以是整数或浮点数。
    42
    3.14
    
  3. 布尔值(Boolean):表示真或假。
    true
    false
    
  4. 对象(Object):键值对的无序集合。
    {
        "name": "Bob",
        "age": 30
    }
    
  5. 数组(Array):值的有序集合。
    ["red", "green", "blue"]
    
  6. 空值(Null):表示一个空值。
    null
    

示例

下面是一个包含多种数据类型和嵌套结构的JSON示例:

{
    "name": "John Doe",
    "age": 29,
    "isStudent": false,
    "courses": [
        {
            "name": "Mathematics",
            "grade": "A"
        },
        {
            "name": "Physics",
            "grade": "B+"
        }
    ],
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "zip": "10001"
    },
    "hobbies": ["reading", "travelling", "swimming"],
    "graduationYear": null
}

在这个示例中,包含了字符串、数值、布尔值、对象、数组和空值等数据类型,并展示了对象和数组的嵌套使用。

解析JSON文件

解析JSON文件在Python中是一个常见的任务,通常使用内置的json模块来完成。

步骤

  1. 导入JSON模块:首先,需要导入Python内置的json模块。
  2. 读取JSON文件:使用文件操作函数打开文件并读取其内容。
  3. 解析JSON数据:使用json.load()函数将JSON数据转换为Python字典或列表。
  4. 处理数据:对解析后的数据进行操作。

示例代码

1. 导入JSON模块

import json

2. 读取和解析JSON文件

假设有一个JSON文件data.json,内容如下:

{
    "name": "John",
    "age": 30,
    "city": "New York",
    "skills": ["Python", "Machine Learning", "Web Development"]
}

以下是读取和解析该文件的代码:

# 打开JSON文件并读取内容
with open('data.json', 'r') as file:
    data = json.load(file)

# 打印解析后的数据
print(data)

3. 处理数据

可以像处理普通字典一样操作解析后的数据:

# 获取名字
name = data['name']
print(f"Name: {name}")

# 获取年龄
age = data['age']
print(f"Age: {age}")

# 获取城市
city = data['city']
print(f"City: {city}")

# 获取技能
skills = data['skills']
print(f"Skills: {', '.join(skills)}")

处理嵌套的JSON数据

如果JSON数据中包含嵌套的结构,可以使用递归或迭代的方法进行处理:

# 假设有一个嵌套的JSON文件 data_nested.json
{
    "person": {
        "name": "John",
        "age": 30,
        "address": {
            "city": "New York",
            "zipcode": "10001"
        }
    },
    "skills": ["Python", "Machine Learning", "Web Development"]
}

# 读取并解析嵌套的JSON数据
with open('data_nested.json', 'r') as file:
    nested_data = json.load(file)

# 访问嵌套的内容
name = nested_data['person']['name']
city = nested_data['person']['address']['city']

print(f"Name: {name}")
print(f"City: {city}")

写入JSON文件

解析和处理完数据后,可以将其写回JSON文件:

# 假设有一个字典
data_to_save = {
    "name": "Jane",
    "age": 25,
    "city": "Los Angeles",
    "skills": ["Data Science", "Deep Learning"]
}

# 将字典写入JSON文件
with open('output.json', 'w') as file:
    json.dump(data_to_save, file, indent=4)
License:  CC BY 4.0
Share

Further Reading

OLDER

ubuntu常用压缩和解压缩命令

NEWER

路由(flask)

Recently Updated

  • 路由(flask)
  • json入门
  • ubuntu常用压缩和解压缩命令
  • VMware与主机之间实现文件传递
  • linux查询历史命令

Trending Tags

Halo

Contents

©2025 redh's blog. Some rights reserved.

Using the Halo theme Chirpy