json序列化与反序列化在多语言中实现方式各异:python用json模块或pydantic,java用jackson,.net用system.text.json,rust用serde_json,各具性能与校验特性。

当需要在不同系统或语言间交换结构化数据时,JSON序列化与反序列化是核心数据转换操作。以下是实现该功能的多种技术路径与对应框架的具体操作方式:
一、使用Python标准库json模块
Python内置的json模块提供轻量级、无依赖的序列化与反序列化能力,适用于纯Python环境且无需额外安装包的场景。
1、导入json模块:import json
2、将Python字典序列化为JSON字符串:json_str = json.dumps({'name': 'Alice', 'age': 30})
3、将JSON字符串反序列化为Python对象:data = json.loads(json_str)
4、处理日期等非默认支持类型时,需自定义Encoder和Decoder类并传入dumps/loads函数的cls参数。
二、使用Pydantic模型进行结构化序列化
Pydantic通过类型注解强制数据校验,在序列化与反序列化过程中同步完成类型验证与字段约束检查,适合对数据完整性要求高的业务逻辑。
1、安装依赖:pip install pydantic
2、定义继承BaseModel的类:class User(BaseModel): name: str; age: int
3、实例化后调用.model_dump()获取字典(序列化):u = User(name='Bob', age=25); dict_data = u.model_dump()
4、使用.model_validate()从字典或JSON字符串构造实例(反序列化):u2 = User.model_validate({'name': 'Carol', 'age': 28})
三、使用Jackson库(Java平台)
Jackson是Java生态中最主流的JSON处理库,支持高灵活性配置与高性能解析,适用于Spring Boot等企业级应用。
1、添加Maven依赖:
2、创建ObjectMapper实例:ObjectMapper mapper = new ObjectMapper();
3、将Java对象序列化为JSON字符串:String json = mapper.writeValueAsString(new Person("David", 32));
4、将JSON字符串反序列化为指定类型对象:Person p = mapper.readValue(json, Person.class);
四、使用System.Text.Json(.NET平台)
System.Text.Json是.NET Core 3.0+内置的高性能JSON API,替代Newtonsoft.Json成为官方推荐方案,内存占用低且吞吐量高。
1、引用命名空间:using System.Text.Json;
2、将C#对象序列化为UTF-8字节数组:byte[] utf8Json = JsonSerializer.SerializeToUtf8Bytes(new Product { Id = 101, Name = "Laptop" });
3、从JSON字符串反序列化为强类型对象:Product prod = JsonSerializer.Deserialize
4、如需忽略大小写或处理驼峰命名,需配置JsonSerializerOptions实例并传入序列化/反序列化方法。
五、使用serde_json(Rust平台)
serde_json基于Serde序列化框架,利用Rust宏系统在编译期生成高效代码,零运行时开销,适用于系统级服务与嵌入式场景。
1、在Cargo.toml中添加依赖:serde_json = "1.0"
2、为结构体派生Serialize和Deserialize trait:#[derive(Serialize, Deserialize)] struct Config { port: u16, host: String }
3、序列化至字符串:let json_str = serde_json::to_string(&config).unwrap();
4、从字符串反序列化:let config: Config = serde_json::from_str(&json_str).unwrap();










