如何读取JSON数据:从基础到实践的全面指南
在当今的软件开发和数据交互中,JSON(JavaScript Object Notation)已成为轻量级数据交换的主流格式,无论是Web前端的API响应、后端配置文件,还是移动端的数据存储,JSON都以其简洁、易读、易解析的特性被广泛应用,如何读取JSON数据,是开发者必备的基础技能,本文将从JSON的基础概念出发,分步骤讲解不同场景下读取JSON数据的方法,并附上代码示例,帮助你快速上手。
JSON是什么?——先搞懂数据的“模样”
在读取数据前,我们需要先明确JSON的数据结构,JSON本质上是一种文本格式,用于表示结构化数据,其核心结构分为两种:
对象(Object)
以 包裹,由“键值对”(Key-Value Pair)组成,键(Key)必须是字符串(需用双引号 包裹),值(Value)可以是字符串、数字、布尔值、数组、对象甚至 null,键值对之间用逗号 分隔。
示例:
{
"name": "张三",
"age": 25,
"isStudent": false,
"courses": ["数学", "英语"],
"address": {
"city": "北京",
"district": "海淀区"
}
}
数组(Array)
以 [] 包裹,由多个值(Value)组成,值可以是任意JSON支持的数据类型,值之间用逗号 分隔。
示例:
[
{"id": 1, "product": "手机", "price": 3999},
{"id": 2, "product": "电脑", "price": 7999},
{"id": 3, "product": "平板", "price": 2999}
]
读取JSON数据的通用步骤
无论使用什么编程语言或工具,读取JSON数据的核心逻辑通常分为三步:
获取JSON数据
JSON数据可能来自多种来源:
- 字符串:直接定义一个JSON格式的字符串(如前端从API获取的响应文本)。
- 文件:本地存储的
.json文件(如配置文件config.json)。 - 网络请求:通过HTTP请求从服务器获取的JSON响应(如RESTful API的返回数据)。
解析JSON数据
解析是将JSON格式的“文本字符串”转换为“编程语言原生数据结构”的过程(如Python中的字典/列表,JavaScript中的对象/数组),这一步通常需要借助语言内置的“JSON解析器”或第三方库。
访问数据
解析完成后,即可通过编程语言的方式(如键名、索引)访问JSON中的具体数据。
不同场景下的JSON数据读取方法
下面我们以几种主流编程语言为例,结合具体场景讲解如何读取JSON数据。
场景1:从字符串读取JSON(最常见)
适用场景:前端接收API响应、后端解析HTTP请求体等。
示例1:Python读取JSON字符串
Python内置 json 模块,使用 json.loads()(load string)解析JSON字符串。
import json
# 1. 定义JSON字符串
json_str = '''
{
"name": "李四",
"age": 30,
"hobbies": ["阅读", "旅行"],
"contact": {
"email": "lisi@example.com",
"phone": "13800138000"
}
}
'''
# 2. 解析JSON字符串(转换为Python字典)
data = json.loads(json_str)
# 3. 访问数据
print("姓名:", data["name"]) # 输出: 姓名: 李四
print("年龄:", data["age"]) # 输出: 年龄: 30
print("爱好:", data["hobbies"][0]) # 输出: 爱好: 阅读
print("邮箱:", data["contact"]["email"]) # 输出: 邮箱: lisi@example.com
示例2:JavaScript读取JSON字符串
JavaScript原生支持JSON,使用 JSON.parse() 解析字符串。
// 1. 定义JSON字符串
const jsonStr = `
{
"name": "王五",
"age": 28,
"skills": ["JavaScript", "Python"],
"work": {
"company": "某科技公司",
"position": "前端工程师"
}
}
`;
// 2. 解析JSON字符串(转换为JavaScript对象)
const data = JSON.parse(jsonStr);
// 3. 访问数据
console.log("姓名:", data.name); // 输出: 姓名: 王五
console.log("年龄:", data.age); // 输出: 年龄: 28
console.log("技能:", data.skills[1]); // 输出: 技能: Python
console.log("公司:", data.work.company); // 输出: 公司: 某科技公司
场景2:从文件读取JSON(本地配置/数据存储)
适用场景:读取本地 .json 配置文件、数据导出文件等。
示例1:Python读取JSON文件
使用 json.load()(注意没有s)读取文件对象。
import json
# 假设当前目录下有 config.json 文件,内容为:
// {
// "database": {
// "host": "localhost",
// "port": 3306,
// "user": "root",
// "password": "123456"
// },
// "debug": true
// }
# 1. 打开文件并解析
with open("config.json", "r", encoding="utf-8") as f:
config = json.load(f)
# 2. 访问数据
print("数据库主机:", config["database"]["host"]) # 输出: 数据库主机: localhost
print("调试模式:", config["debug"]) # 输出: 调试模式: true
示例2:JavaScript(Node.js)读取JSON文件
Node.js中需使用 fs(文件系统)模块读取文件,再结合 JSON.parse() 解析。
const fs = require('fs');
// 1. 读取文件内容(字符串)
const fileContent = fs.readFileSync('data.json', 'utf8');
// 2. 解析JSON字符串
const data = JSON.parse(fileContent);
// 假设 data.json 内容为:
// {
// "userId": 1001,
// "username": "admin",
// "permissions": ["read", "write", "delete"]
// }
// 3. 访问数据
console.log("用户ID:", data.userId); // 输出: 用户ID: 1001
console.log("权限:", data.permissions.join(", ")); // 输出: 权限: read, write, delete
场景3:从网络请求读取JSON(API交互)
适用场景:调用第三方API、获取服务器动态数据等。
示例1:Python(requests库)读取API返回的JSON
使用 requests 库发送HTTP请求,响应体的 json() 方法可直接解析JSON数据。
import requests
# 1. 发送GET请求(以公开API为例)
url = "https://jsonplaceholder.typicode.com/posts/1"
response = requests.get(url)
# 2. 检查请求是否成功(状态码200)
if response.status_code == 200:
# 3. 直接解析响应体的JSON(response.json()内部调用json.loads)
data = response.json()
# 4. 访问数据
print("帖子ID:", data["id"]) # 输出: 帖子ID: 1
print("标题:", data["title"]) # 输出: 标题: sunt aut facere repellat provident occaecati excepturi optio reprehenderit
print("内容:", data["body"][:50] + "...") # 输出内容的前50个字符
else:
print("请求失败,状态码:", response.status_code)
示例2:JavaScript(fetch API)读取API返回的JSON
现代浏览器和Node.js(需兼容环境)支持 fetch API,响应的 json() 方法返回Promise,需用 await 或 .then() 处理。
// 1. 发送GET请求
fetch("https://jsonplaceholder.typicode.com/users/1")
.then(response => {
// 检查响应是否成功
if (!response.ok) {
throw new Error("网络响应异常");
}
// 解析JSON(返回Promise)
return response.json();
})
.then(data => {
// 2. 访问数据
console.log("用户名:", data.name); // 输出


还没有评论,来说两句吧...