JSON 数组写入全指南:从基础到实践
在现代 Web 开发和数据交换中,JSON(JavaScript Object Notation)以其轻量、易读和易于解析的特性,成为了事实上的数据交换标准,在 JSON 的数据结构中,数组是一种非常核心且常用的形式,它用于存储有序的值列表,无论是配置信息、API 响应还是前端数据,我们经常需要将数组数据写入 JSON。
本文将详细讲解如何将数组写入 JSON,涵盖从基础概念到不同编程语言中的具体实现,并提供完整的代码示例。
什么是 JSON 数组?
我们来明确一下 JSON 数组的基本形态,在 JSON 中,数组是由方括号 [] 包围的一组值,这些值之间用逗号 分隔。
数组中的值可以是多种数据类型:
- 字符串 (String):
"apple", "banana" - 数字 (Number):
1, 3.14, -50 - 布尔值 (Boolean):
true, false - 对象 (Object):
{"name": "John", "age": 30} - 其他数组 (Array):
[1, 2, 3](即嵌套数组) - null
一个简单的 JSON 数组示例:
["苹果", "香蕉", "橙子"]
一个包含多种数据类型的 JSON 数组示例:
[
"张三",
25,
true,
{ "city": "北京", "job": "工程师" },
["编程", "阅读", "旅行"]
]
核心概念:将数组“写入”JSON 的两种含义
当我们说“将数组写入 JSON”时,通常有两种理解:
- 将内存中的数组对象序列化为 JSON 格式的字符串:这是最常见的场景,在编程语言中,我们通常使用数组(如 Python 的
list、JavaScript 的Array)来操作数据,当需要将这些数据通过网络发送、保存到文件或存储到数据库时,就需要将它们转换成符合 JSON 格式的字符串。 - 将数据写入一个 JSON 文件:这是第一种情况的延伸,我们先将内存中的数组序列化为 JSON 字符串,然后再将这个字符串写入到一个
.json文件中。
下面,我们将围绕这两种情况,用几种主流编程语言进行演示。
实战演练:在不同语言中写入 JSON 数组
JavaScript (Node.js 环境)
JavaScript 是 JSON 的“母语”,处理起来最为直接。
序列化为 JSON 字符串
使用 JSON.stringify() 方法,它可以将 JavaScript 对象(包括数组)转换为一个 JSON 字符串。
// 1. 创建一个 JavaScript 数组
const users = [
{ id: 1, name: "Alice", active: true },
{ id: 2, name: "Bob", active: false },
{ id: 3, name: "Charlie", active: true }
];
// 2. 将数组序列化为 JSON 字符串
// - 第一个参数:要转换的对象
// - 第二个参数(可选):用于格式化输出的函数或缩进空格数,使 JSON 更易读
const jsonString = JSON.stringify(users, null, 2); // 使用 2 个空格缩进
console.log(jsonString);
// 输出:
// [
// {
// "id": 1,
// "name": "Alice",
// "active": true
// },
// {
// "id": 2,
// "name": "Bob",
// "active": false
// },
// {
// "id": 3,
// "name": "Charlie",
// "active": true
// }
// ]
写入 JSON 文件
在 Node.js 环境中,我们可以使用内置的 fs (File System) 模块来写入文件。
const fs = require('fs');
const path = require('path');
// (users 数组和 jsonString 变量同上)
// 3. 将 JSON 字符串写入文件
// - path.join(__dirname, 'data.json') 确保文件路径是正确的
// - 'utf8' 指定文件编码
fs.writeFileSync(path.join(__dirname, 'data.json'), jsonString, 'utf8');
console.log('数据已成功写入 data.json 文件');
Python
Python 中使用 json 标准库来处理 JSON 数据。
序列化为 JSON 字符串
使用 json.dumps() 函数(dumps = dump string)。
import json
# 1. 创建一个 Python 列表,其中包含字典
users = [
{"id": 1, "name": "Alice", "active": True},
{"id": 2, "name": "Bob", "active": False},
{"id": 3, "name": "Charlie", "active": True}
]
# 2. 将列表序列化为 JSON 字符串
# - indent=2: 指定缩进,使输出格式化
# - ensure_ascii=False: 确保中文字符正常显示,而不是转义为 \uXXXX
json_string = json.dumps(users, indent=2, ensure_ascii=False)
print(json_string)
# 输出与 JavaScript 示例类似
写入 JSON 文件
使用 json.dump() 函数(dump = dump to file),它可以直接将 Python 对象写入文件流,无需先创建字符串。
import json
# (users 变量同上)
# 3. 直接将列表对象写入文件
# - 'w' 表示以写入模式打开文件
# - indent=2 和 ensure_ascii=False 同上
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(users, f, indent=2, ensure_ascii=False)
print('数据已成功写入 data.json 文件')
注意:使用 with open(...) 是 Python 中推荐的做法,因为它能确保文件在操作完成后被自动关闭。
Java
在 Java 中,我们通常使用第三方库,如 Jackson 或 Gson,因为标准库处理 JSON 相对繁琐,这里以 Jackson 为例。
确保你的项目中包含了 Jackson 的依赖(在 Maven 的 pom.xml 中添加)。
序列化为 JSON 字符串
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Arrays;
import java.util.List;
public class JsonArrayWriter {
public static void main(String[] args) {
// 1. 创建一个 Java List (数组)
List<User> users = Arrays.asList(
new User(1, "Alice", true),
new User(2, "Bob", false),
new User(3, "Charlie", true)
);
// 2. 创建 ObjectMapper 实例
ObjectMapper objectMapper = new ObjectMapper();
try {
// 3. 将 List 序列化为 JSON 字符串
// - writerWithDefaultPrettyPrinter() 用于格式化输出
String jsonString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(users);
System.out.println(jsonString);
// 输出与前面的示例类似
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}
// 需要一个简单的 POJO (Plain Old Java Object) 类来对应 JSON 对象
class User {
public int id;
public String name;
public boolean active;
public User() {} // Jackson 需要一个无参构造函数
public User(int id, String name, boolean active) {
this.id = id;
this.name = name;
this.active = active;
}
}
写入 JSON 文件
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
public class JsonFileWriter {
public static void main(String[] args) {
List<User> users = Arrays.asList(
new User(1, "Alice", true),
new User(2, "Bob", false),
new User(3, "Charlie", true)
);
ObjectMapper objectMapper = new ObjectMapper();
try {
// 4. 直接将 List 写入文件
// - objectMapper.writeValue() 可以直接写入文件、字节流等
File outputFile = new File("data.json");
objectMapper.writerWithDefaultPrettyPrinter().writeValue(outputFile, users);
System.out.println("数据已成功写入 data.json 文件");
} catch (IOException e) {
e.printStackTrace();
}
}
}
// User 类同上
总结与最佳实践
将数组写入 JSON 是一项基础且重要的技能,无论你使用哪种编程语言,核心思想都是一致的:
- 准备数据:在内存中创建好你的数组或



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