JSON的序列化和反序列化

🕒 2025-12-30 14:51:21
📁 JSON学习教程
作者:JSONLA小编

JSON 的序列化与反序列化是跨语言数据交互的核心环节,序列化实现数据结构到 JSON 字符串的转换,反序列化则完成逆向解析,二者共同支撑着不同系统、不同编程语言间的数据传输与解析。不同语言实现这两个过程的方式虽有差异,但核心逻辑一致 —— 要么依托内置库快速实现,要么借助成熟的第三方库补足原生支持的不足。掌握主流编程语言中 JSON 序列化与反序列化的实现方法,是保障数据高效、准确交互的关键。接下来,我们将通过实例讲解 JavaScript、Python、C++ 中这两个过程的具体实现。

JSON的序列化和反序列化

JSON 的序列化和反序列化是指将数据结构转换为 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}

反序列化示例(将 JSON 字符串转换为数据结构)

代码语言: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 数据,确保数据传输与解析的准确性和效率。


相关推荐

正在加载... ...