验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

怎么判断Field类型

阅读:716 来源:乙速云 作者:代码code

怎么判断Field类型

Field 类型怎么判断”这个问题,通常出现在 ORM / 序列化 / 反射 / 配置解析 等场景里。不同语言、不同框架,判断方式不一样。下面我按常见场景给你系统说明,你可以对号入座。


一、Python(最常见:SQLAlchemy / Pydantic / dataclass / 反射)

1️⃣ SQLAlchemy 中判断 Field(Column)类型

from sqlalchemy import inspect
from sqlalchemy.types import Integer, String

insp = inspect(Model)

for col in insp.columns:
    print(col.name, col.type)

判断具体类型:

from sqlalchemy import Integer

if isinstance(col.type, Integer):
    print("是 Integer 类型")

推荐方式isinstance(col.type, 某类型)


2️⃣ Pydantic 中判断 Field 类型

from pydantic import BaseModel, Field
from typing import get_origin, get_args

class User(BaseModel):
    age: int
    name: str

for name, field in User.model_fields.items():
    print(name, field.annotation)

判断:

from typing import List

if field.annotation == int:
    print("int 类型")

if get_origin(field.annotation) is list:
    print("List 类型")

3️⃣ dataclass 判断字段类型

from dataclasses import fields

for f in fields(obj):
    print(f.name, f.type)

判断:

if f.type == int:
    ...

二、Java(反射 / JPA / Hibernate)

1️⃣ 反射判断 Field 类型

Field field = obj.getClass().getDeclaredField("age");
Class type = field.getType();

if (type == int.class) {
    ...
}

2️⃣ JPA / Hibernate 判断字段类型

@Column
private Integer age;

通过 EntityManager

entityManager.getMetamodel()

或 Hibernate:

sessionFactory.getClassMetadata(Entity.class)

三、Go(struct tag / reflect)

t := reflect.TypeOf(obj)
field, _ := t.FieldByName("Age")

fmt.Println(field.Type)

判断:

if field.Type.Kind() == reflect.Int {
    ...
}

四、前端(TypeScript / 表单 Field)

TypeScript 类型判断

type FieldType = T extends string
  ? "string"
  : T extends number
  ? "number"
  : "other";

运行时判断(JS):

typeof value

五、通用判断思路(重点)

判断 Field 类型,通常分三步:

  1. 拿到 Field 对象
  2. 获取它的 type / annotation / class
  3. 用类型比较或 isinstance / typeof / Kind 判断

六、如果你愿意,我可以更精确帮你

你可以直接告诉我:

  • ✅ 使用的是 哪种语言
  • ✅ 用的是 什么框架(SQLAlchemy / Pydantic / JPA / Django ORM / 前端表单)
  • ✅ 你想判断的是 数据库字段 / 模型字段 / 表单字段 / 配置字段

我可以直接给你可复制的示例代码

分享到:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>