温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎样自定义序列化

发布时间:2026-10-05 03:20:27 来源:亿速云 阅读:92 作者:小樊 栏目:编程语言

“自定义序列化”在不同语言/框架里做法差别很大,我先按常见语言给你一个总览,你可以告诉我是哪一门(或哪个框架),我再给具体代码。


一、什么是“自定义序列化”

默认序列化通常是:对象 → 字段直接转成 JSON / 二进制。
自定义序列化就是:

  • 控制哪些字段序列化
  • 控制字段名
  • 控制格式 / 类型转换
  • 忽略某些字段
  • 兼容旧版本数据

二、常见语言示例

1️⃣ Java(Jackson / Gson)

Jackson 示例

public class User {
    @JsonProperty("user_name")
    private String name;

    @JsonIgnore
    private String password;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birth;

    // getters / setters
}

自定义序列化器:

public class UserSerializer extends JsonSerializer<User> {
    public void serialize(User u, JsonGenerator gen, SerializerProvider sp)
            throws IOException {
        gen.writeStartObject();
        gen.writeStringField("name", u.getName().toUpperCase());
        gen.writeEndObject();
    }
}

2️⃣ Python(json / pydantic)

原生 json

import json

class User:
    def __init__(self, name, password):
        self.name = name
        self.password = password

def user_to_dict(u):
    return {"name": u.name}

json.dumps(user, default=user_to_dict)

Pydantic(推荐)

from pydantic import BaseModel

class User(BaseModel):
    name: str
    password: str

    class Config:
        exclude = {"password"}

3️⃣ C#(Newtonsoft / System.Text.Json)

public class User
{
    [JsonProperty("user_name")]
    public string Name { get; set; }

    [JsonIgnore]
    public string Password { get; set; }
}

4️⃣ Go

type User struct {
    Name     string `json:"user_name"`
    Password string `json:"-"`
}

5️⃣ JavaScript / TypeScript

const user = {
  name: "Tom",
  password: "123"
};

const json = JSON.stringify(user, ["name"]);

三、常见自定义方式总结

需求 方式
改字段名 注解 / 标签
忽略字段 @JsonIgnore / -
改格式 @JsonFormat
完全控制 自定义 Serializer
版本兼容 @JsonView / version

四、你可以告诉我

  • 用什么语言 / 框架?
  • 是 JSON / 二进制 / 数据库 / 网络传输?
  • 想解决什么问题(脱敏?兼容?性能?)

我可以直接给你可运行的完整示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手