JSON 的序列化与反序列化是跨语言数据交互的核心环节,序列化实现数据结构到 JSON 字符串的转换,反序列化则完成逆向解析,二者共同支撑着不同系统、不同编程语言间的数据传输与解析。不同语言实现这两个过程的方式虽有差异,但核心逻辑一致 —— 要么依托内置库快速实现,要么借助成熟的第三方库补足原生支持的不足。掌握主流编程语言中 JSON 序列化与反序列化的实现方法,是保障数据高效、准确交互的关键。接下来,我们将通过实例讲解 JavaScript、Python、C++ 中这两个过程的具体实现。
JSON 的序列化和反序列化是指将数据结构转换为 JSON 格式的字符串,以及将 JSON 字符串转换为对应的数据结构的过程。在许多编程语言中,都有内置或第三方库来实现 JSON 的序列化和反序列化操作。
代码语言:JavaScript
// JavaScript
var person = {name: "Lion", age: 30};
var jsonString = JSON.stringify(person);
console.log(jsonString); // 输出: {"name": "Lion", "age": 30}
代码语言:Python
import json
person = {'name': 'Lion', 'age': 30}
jsonString = json.dumps(person)
print(jsonString) # 输出: {"name": "Lion", "age": 30}
代码语言:C++
// C++
// Using RapidJSON library
rapidjson::Document document;
document.SetObject();
rapidjson::Document::AllocatorType& allocator = document.GetAllocator();
document.AddMember("name", "Lion", allocator);
document.AddMember("age", 30, allocator);
rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
document.Accept(writer);
std::string jsonString = buffer.GetString();
std::cout << jsonString << std::endl; // 输出: {"name": "Lion", "age": 30}
代码语言:JavaScript
import json
jsonString = '{"name": "Lion", "age": 30}'
person = json.loads(jsonString)
print(person['name']) # 输出: Lion
print(person['age']) # 输出: 30
代码语言:Python
import json
jsonString = '{"name": "Lion", "age": 30}'
person = json.loads(jsonString)
print(person['name']) # 输出: Lion
print(person['age']) # 输出: 30
代码语言:JavaScript
// C++
// Using RapidJSON library
rapidjson::Document document;
document.Parse(jsonString.c_str());
std::string name = document["name"].GetString();
int age = document["age"].GetInt();
std::cout << name << std::endl; // 输出: Lion
std::cout << age << std::endl; // 输出: 30
JSON 序列化与反序列化是实现跨语言数据互通的基础,JavaScript 和 Python 凭借原生 / 内置库即可简洁完成操作,C++ 则需依赖 RapidJSON 等第三方库实现同等功能。无论采用哪种语言,核心都是实现 “数据结构↔JSON 字符串” 的双向转换,掌握这些实现方式,能让开发者在前后端交互、跨语言项目开发中,灵活处理 JSON 数据,确保数据传输与解析的准确性和效率。
正在加载... ...