我是使用JAX-RS和Jersey的新手。我面临的问题是我无法按照自己的方式获得JSON响应。我想要一个类似于以下内容的响应:
{
"result": "success",
"car": {
"id": 42,
"name": "toyota",
"model": "camry"
}
}
到目前为止,我有一个名为Car的课程。它有3个字段:id,name和带有getter和setter的模型。我使用返回类型为Car的函数获得了Car的单个实例的格式正确的JSON响应。
public Car getCarWithId(@PathParam("id") int id) {
return carService.getCarWithId(id);
}
这只给我以下内容:
{
"id": 42,
"name": "toyota",
"model": "camry"
}
如何通过“结果”获得响应:“成功”。这有助于我将来解决更复杂的问题。谢谢你的帮助。
P.S。我想过尝试返回一个hashmap,但这给了我一个错误,好像我会进入一个更深的洞。
答案 0 :(得分:1)
假设您的提供者是杰克逊,您可以将其包含在具有ResponseEntity
字段的自定义result
对象中,并将Map<String, Object>
包含在内,并使用{{1}注释获取者}。例如
@JsonAnyGetter
public class ResponseEntity {
private String result;
private final Map<String, Object> otherFields = new HashMap<>();
public String getResult() {
return result;
}
@JsonAnyGetter
public Map<String, Object> getOtherFields() {
return otherFields;
}
public void addField(String field, Object value) {
otherFields.put(field, value);
}
}
所做的是使@JsonAnyGetter
不是序列化的,而只是otherField
中的属性。您创建实例后,以及所有Map
,您将获得所需的结果。