“自定义序列化”在不同语言/框架里做法差别很大,我先按常见语言给你一个总览,你可以告诉我是哪一门(或哪个框架),我再给具体代码。
默认序列化通常是:对象 → 字段直接转成 JSON / 二进制。
自定义序列化就是:
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();
}
}
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)
from pydantic import BaseModel
class User(BaseModel):
name: str
password: str
class Config:
exclude = {"password"}
public class User
{
[JsonProperty("user_name")]
public string Name { get; set; }
[JsonIgnore]
public string Password { get; set; }
}
type User struct {
Name string `json:"user_name"`
Password string `json:"-"`
}
const user = {
name: "Tom",
password: "123"
};
const json = JSON.stringify(user, ["name"]);
| 需求 | 方式 |
|---|---|
| 改字段名 | 注解 / 标签 |
| 忽略字段 | @JsonIgnore / - |
| 改格式 | @JsonFormat |
| 完全控制 | 自定义 Serializer |
| 版本兼容 | @JsonView / version |
我可以直接给你可运行的完整示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。