Python JSON格式化

Python JSON格式化

Python JSON格式化

1. 简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端数据传输和存储。Python提供了json模块来处理JSON数据,包括解析JSON字符串和格式化输出。本文将详细介绍Python中JSON的相关操作。

2. JSON基础

在开始介绍Python中JSON的使用前,我们先来了解一下JSON的基础知识。

2.1 JSON语法

JSON由键值对组成,键必须是字符串,值可以是字符串、数字、布尔值、数组、对象或者null。JSON使用花括号{}表示对象,使用方括号[]表示数组。

以下是一个包含各种类型的JSON示例:

{
  "name": "John",
  "age": 30,
  "isStudent": false,
  "marks": [85, 90, 95],
  "address": {
    "city": "New York",
    "country": "USA"
  },
  "languages": ["Python", "Java", "JavaScript"],
  "isNull": null
}

2.2 JSON和Python对象的对应关系

将JSON数据解析后,我们可以将其转换为Python对象。具体的转换规则如下:

JSON Python
Object dict
Array list
Number int/float
String str
Boolean bool
null None

3. JSON解析

在Python中,我们可以使用json模块来解析JSON字符串。json模块提供了两个主要的方法:json.loads()json.load()

3.1 json.loads()

json.loads()方法将JSON字符串解析为Python对象。

以下是一个示例代码:

import json

# JSON字符串
json_str = '{"name": "John", "age": 30, "city": "New York"}'

# 解析JSON
data = json.loads(json_str)

# 输出解析结果
print(data)

输出:

{'name': 'John', 'age': 30, 'city': 'New York'}

3.2 json.load()

json.load()方法从文件中读取JSON字符串并解析为Python对象。

假设我们有一个名为data.json的文件,并包含以下内容:

{
  "name": "John",
  "age": 30,
  "city": "New York"
}

以下是一个示例代码:

import json

# 从文件中读取JSON
with open('data.json') as f:
    data = json.load(f)

# 输出解析结果
print(data)

输出:

{'name': 'John', 'age': 30, 'city': 'New York'}

4. JSON格式化输出

在Python中,我们可以使用json模块将Python对象转换为JSON字符串,并格式化输出。

4.1 json.dumps()

json.dumps()方法用于将Python对象转换为JSON字符串。

以下是一个示例代码:

import json

# Python对象
data = {
  "name": "John",
  "age": 30,
  "city": "New York"
}

# 转换为JSON字符串
json_str = json.dumps(data)

# 输出JSON字符串
print(json_str)

输出:

{"name": "John", "age": 30, "city": "New York"}

4.2 json.dump()

json.dump()方法用于将Python对象转换为JSON字符串,并将其写入文件。

以下是一个示例代码:

import json

# Python对象
data = {
  "name": "John",
  "age": 30,
  "city": "New York"
}

# 将JSON字符串写入文件
with open('data.json', 'w') as f:
    json.dump(data, f)

执行后将在当前目录下生成名为data.json的文件,并包含以下内容:

{
  "name": "John",
  "age": 30,
  "city": "New York"
}

5. JSON数据访问

5.1 访问对象中的值

以下是一个示例代码,演示如何访问JSON对象中的值:

import json

# JSON字符串
json_str = '{"name": "John", "age": 30, "city": "New York"}'

# 解析JSON
data = json.loads(json_str)

# 访问值
name = data['name']
age = data['age']
city = data['city']

# 输出结果
print(f"Name: {name}")
print(f"Age: {age}")
print(f"City: {city}")

输出:

Name: John
Age: 30
City: New York

5.2 访问数组中的值

以下是一个示例代码,演示如何访问JSON数组中的值:

import json

# JSON字符串
json_str = '{"marks": [85, 90, 95]}'

# 解析JSON
data = json.loads(json_str)

# 访问数组中的值
marks = data['marks']
first_mark = marks[0]
second_mark = marks[1]
third_mark = marks[2]

# 输出结果
print(f"Marks: {marks}")
print(f"First Mark: {first_mark}")
print(f"Second Mark: {second_mark}")
print(f"Third Mark: {third_mark}")

输出:

Marks: [85, 90, 95]
First Mark: 85
Second Mark: 90
Third Mark: 95

6. JSON格式化输出选项

json.dumps()方法提供了一些选项来控制JSON格式化输出的形式,如缩进、排序等。

以下是一些常用的选项:

  • indent:指定缩进的空格数,可以是整数或字符串,默认为None
  • separators:指定分隔符,默认为(', ', ': ')
  • sort_keys:指定是否按键进行排序,默认为False

以下是一个示例代码:

import json

# Python对象
data = {
  "name": "John",
  "age": 30,
  "city": "New York"
}

# 转换为JSON字符串,使用4个空格进行缩进,按键排序
json_str = json.dumps(data, indent=4, sort_keys=True)

# 输出JSON字符串
print(json_str)

输出:

{
    "age": 30,
    "city": "New York",
    "name": "John"
}

7. 总结

本文介绍了Python中处理JSON的基本操作,包括解析JSON字符串、格式化输出和访问JSON数据。通过json模块的相关方法,我们可以在Python中轻松地处理JSON数据,实现与其他语言的数据交换和存储。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程