gpt4 book ai didi

java - JAX-RS 和 Jersey : Properly Nested JSON

转载 作者:行者123 更新时间:2023-11-30 10:51:33 26 4
gpt4 key购买 nike

我对使用 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"
}

如何获得“结果”:“成功”的响应。这将帮助我解决 future 更复杂的问题。感谢您的帮助。

附言我考虑过尝试返回一个 HashMap ,但这给了我一个错误,似乎我会陷入更深的困境。

最佳答案

假设您的提供者是 Jackson,您可以将其包装在自定义 ResponseEntity 中带有 result 的对象字段,以及一个 Map<String, Object>@JsonAnyGetter 注释的 setter/getter .例如

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中的属性.您在创建实例之后,所有entity.addField("car", carObject); ,你会得到你想要的结果。

关于java - JAX-RS 和 Jersey : Properly Nested JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34690023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com