作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用参数类型将 JSON 检索到前端。
任何类似:
{
"address": "String",
"role": {
"admin": 0,
"user": 1,
"company": 2
},
"level": "String",
"surname": "String",
"imageUrl": "String",
"name": "String",
"birthDate": "Date",
"email": "String"
}
现在我可以检索这个:
{
"address": "String",
"role": "Role",
"level": "String",
"surname": "String",
"imageUrl": "String",
"name": "String",
"birthDate": "Date",
"email": "String"
}
为此,我正在使用:
public Map<String, String> getTypesOfObjectAttributes(Object o) {
Map<String, String> fields = new HashMap<>();
Class<?> clazz = o.getClass();
for (Field field : clazz.getDeclaredFields()) {
String[] type = field.getType().toString().split("\\.");
fields.put(field.getName(), type[type.length - 1]);
}
return fields;
}
端点使用此代码来检索 JSON。
你能帮我检索我的枚举角色的所有可用值吗?
public enum Role {
admin,
user,
company;
}
最佳答案
调用getEnumConstants()
查看它是否是一个枚举
,并获取枚举值。
如果有枚举常量,则插入嵌套的Map
而不是类型字符串。
像这样:
public static Map<String, Object> getTypesOfObjectAttributes(Class<?> clazz) {
Map<String, Object> fields = new HashMap<>();
for (Field field : clazz.getDeclaredFields()) {
Object[] enumConstants = field.getType().getEnumConstants();
if (enumConstants != null) {
Map<String, Object> enums = new LinkedHashMap<>();
for (Object enumConstant : enumConstants) {
Enum<?> e = (Enum<?>) enumConstant;
enums.put(e.name(), e.ordinal());
}
fields.put(field.getName(), enums);
} else {
String[] type = field.getType().toString().split("\\.");
fields.put(field.getName(), type[type.length - 1]);
}
}
return fields;
}
测试
System.out.println(getTypesOfObjectAttributes(Foo.class));
public class Foo {
String address;
Role role;
String level;
String surname;
String imageUrl;
String name;
Date birthDate;
String email;
}
public enum Role {
admin,
user,
company;
}
输出
{address=String, role={admin=0, user=1, company=2}, level=String, surname=String, imageUrl=String, name=String, birthDate=Date, email=String}
关于java - 如何在 spring 中检索我的响应的参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61676896/
我是一名优秀的程序员,十分优秀!