记事本JSON文件怎么编译?从创建到解析的完整指南
理解“编译”JSON文件:其实不是“编译”,是“处理”
当我们说“记事本JSON文件怎么编译”时,可能存在一个小小的概念混淆:JSON(JavaScript Object Notation)本身就是一种文本格式,不需要像C++、Java那样的“编译”过程,记事本保存的JSON文件本质是纯文本(.json后缀),我们常说的“编译”更准确的理解是“将文本格式的JSON数据转换为程序可识别的结构化对象”,或者“验证JSON文本是否符合规范”。
本文将围绕“如何用记事本创建JSON文件”和“如何在不同编程语言中‘解析’(处理)JSON文件”展开,帮你完成从文本到数据的完整流程。
用记事本创建并保存JSON文件
新建JSON文件
- 打开记事本(Windows自带或Mac的“文本编辑”),输入JSON格式的数据。
- JSON格式核心规则:
- 数据以键值对(
"key": value)存在,键必须用双引号包裹; - 值可以是字符串(双引号)、数字、布尔值(
true/false)、数组([])、对象()或null; - 多个键值对用逗号分隔,最后一个元素后无逗号。
- 数据以键值对(
示例:创建一个简单的JSON文件
{
"name": "张三",
"age": 25,
"isStudent": false,
"courses": ["数学", "英语", "编程"],
"address": {
"city": "北京",
"district": "海淀区"
},
"phone": null
}
保存为JSON文件
- 点击记事本“文件”→“另存为”;
- 在“保存类型”中选择“所有文件()”;
- 文件名后缀必须为
.json(如data.json),编码选择UTF-8(避免中文乱码)。
保存后,你就有了一个标准的JSON文本文件,接下来需要在程序中“解析”它。
如何“编译”(解析)JSON文件?不同语言的方法
JSON的核心作用是在不同程序/语言间传递数据,解析”的过程就是将JSON文本转换为该语言原生支持的数据结构(如Python的字典、Java的Map、JavaScript的对象等),以下是常见编程语言的解析方法:
Python:使用json模块
Python内置json模块,可直接解析JSON文件。
示例代码:
import json
# 1. 读取JSON文件
with open('data.json', 'r', encoding='utf-8') as f:
json_data = json.load(f) # 将JSON文本转换为Python字典
# 2. 操作解析后的数据
print("姓名:", json_data["name"]) # 输出: 张三
print("课程列表:", json_data["courses"]) # 输出: ['数学', '英语', '编程']
print("城市:", json_data["address"]["city"]) # 输出: 北京
# 3. 将Python对象转换为JSON文本(反向操作)
python_dict = {"key": "value"}
json_str = json.dumps(python_dict, ensure_ascii=False) # ensure_ascii=False支持中文
print(json_str) # 输出: {"key": "value"}
JavaScript:使用JSON对象(浏览器/Node.js通用)
JavaScript原生支持JSON,无需额外库。
示例代码(浏览器控制台运行):
// 1. 假设data.json内容是前面示例的JSON文本
// 在实际项目中,可通过fetch API获取JSON文件:
fetch('data.json')
.then(response => response.json()) // response.json()解析JSON文本
.then(data => {
console.log("姓名:", data.name); // 输出: 张三
console.log("课程列表:", data.courses); // 输出: ['数学', '英语', '编程']
console.log("城市:", data.address.city); // 输出: 北京
});
// 2. 将JS对象转换为JSON字符串(反向操作)
const obj = { key: "value" };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // 输出: {"key":"value"}
Java:使用Gson或Jackson库
Java没有内置JSON解析,需借助第三方库(推荐Gson或Jackson)。
准备工作:
- 在Maven项目中添加
Gson依赖:<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency>
示例代码:
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import java.io.FileReader;
public class JsonParse {
public static void main(String[] args) {
try {
// 1. 读取JSON文件并解析为JsonObject
Gson gson = new Gson();
JsonObject jsonData = gson.fromJson(new FileReader("data.json"), JsonObject.class);
// 2. 操作数据
System.out.println("姓名: " + jsonData.get("name").getAsString()); // 输出: 张三
System.out.println("年龄: " + jsonData.get("age").getAsInt()); // 输出: 25
// 3. 将Java对象转换为JSON字符串(反向操作)
Person person = new Person("李四", 30);
String jsonString = gson.toJson(person);
System.out.println(jsonString); // 输出: {"name":"李四","age":30}
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 辅助类
class Person {
String name;
int age;
// 构造方法、getter/setter省略
}
C#:使用System.Text.Json(.NET Core/.NET 5+)
C#从.NET Core开始内置System.Text.Json,无需额外安装。
示例代码:
using System;
using System.Text.Json;
using System.IO;
class Program {
static void Main() {
// 1. 读取JSON文件并解析为JsonDocument
string jsonContent = File.ReadAllText("data.json");
using (JsonDocument doc = JsonDocument.Parse(jsonContent)) {
JsonElement root = doc.RootElement;
Console.WriteLine("姓名: " + root.GetProperty("name").GetString()); // 输出: 张三
Console.WriteLine("是否学生: " + root.GetProperty("isStudent").GetBoolean()); // 输出: False
}
// 2. 将C#对象转换为JSON字符串(反向操作)
var person = new { Name = "王五", Age = 28 };
string jsonString = JsonSerializer.Serialize(person);
Console.WriteLine(jsonString); // 输出: {"Name":"王五","Age":28}
}
}
常见问题:JSON解析失败的“坑”
-
语法错误:
- 逗号缺失/多余(如最后一个元素后加逗号);
- 引号不匹配(键或值用单引号,或引号未闭合);
- 布尔值/
null大小写错误(如True、Null,正确应为true、null)。
解决:用在线JSON格式化工具(如JSON Formatter)验证格式。
-
编码问题:
记事本保存时未选UTF-8,导致中文乱码,务必在保存时指定编码为UTF-8。 -
文件路径错误:
程序中读取JSON文件时,路径需正确(如使用相对路径data.json时,确保文件与程序在同一目录,或用绝对路径)。
从“记事本文本”到“程序数据”的完整链路
| 步骤 | 操作说明 |
|---|---|
| 创建JSON文件 | 用记事本编写符合规范的JSON文本,保存为.json文件(编码UTF-8) |
| 选择解析语言 | 根据开发语言(Python/JS/Java/C#等)选择对应的JSON解析库/方法 |
| 解析JSON文本 | 转换为程序原生数据结构(字典/对象/Map等) |
| 使用数据 | 对解析后的数据进行读取、修改、计算等操作 |
| 反向操作(可选) | 将程序数据转换为JSON字符串,用于存储或传输 |
“编译”JSON文件的本质是**让机器理解人类可读的文本



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