【发布时间】:2020-06-05 14:31:37
【问题描述】:
假设我有一个来自 angular 的 post http 请求具有以下 JSON 结构:
{
"abc":{
"pqr":2,
"lmn":5,
"xyz":89
},
"def":[a,b,c,d],
"klm":{
//object attributes
}
}
从 Angular HttpClient 作为发布请求发送。
现在在 spring boot 控制器中,我使用
的 Hashmap 来接受它@PostMapping("/createXyzFunctionality")
public void createXyzFunctionality(@RequestBody Map<String, Object> json)
{
for (Map.Entry<String, Object> entry : json.entrySet())
{
//Using entry.getKey() and entry.getValue() I can access the attributes
//"abc","def","klm" as string but I want to access as class objects
.....
}
}
现在,我有一个“abc”的模型类,但不完全是我的类的实例,所以当我这样做时
CustomClass val = (CustomClass) entry.getValue();
我得到了 ClassCastException,帮助我访问 hashmap 中对象的属性,而无需更改 spring boot 中的模型。
CustomClass{
private Integer pqr,lmn,xyz;
private String extraVariable;
//getters setters
}
我希望 pqr,lmn,xyz 从“abc”中获取值。
【问题讨论】:
-
将对象映射到特定的类通常是个好主意。
-
@Carsten 我假设你想写“......不是一个好主意”?
-
@Endzeit 大声笑没有。你到底是从哪里得到这个想法的?
-
@Carsten 我认为存在误解。我认为您正在谈论将 JSON-Objects 映射到特定类而不是 Object 类。我认为您的意思是将 Object 转换为特定的类是个好主意。我怀疑铸造是一个好主意,应该在适用的情况下规避。我同意您应该使用特定的类和一般的强类型。我的错。
标签: java angular spring spring-boot