目前我正在开发spring项目,我希望将类显示为JSON响应。以下是类模板和其他相关详细信息。
公共类国家{
@Column(name = "name")
private String name;
@Id
@Column(name = "code")
private String Code;
//Getters & Setters ...
}
当前回应:
[{"name":"Andorra","code":"AD"},{"name":"United Arab Emirates","code":"AE"}]
预期回应:
[ { "countries" : [{"name":"Andorra","code":"AD"},{"name":"United Arab Emirates","code":"AE"}], "status" : "ok", "message":"success", etc..etc...}]
而不是状态和消息,它也可能是一些数组列表。
答案 0 :(得分:1)
您需要创建包含列表并使用ResponseEntity。
public class Foo {
private List<Country> countries;
// get/set...
}
@Controller
public class MyController {
@ResponseBody
@RequestMapping(value = "/foo", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET)
public ResponseEntity<Foo> foo() {
Foo foo = new Foo();
Country country = new Country();
foo.getCountries().add(country);
return ResponseEntity.ok(foo);
}
}
答案 1 :(得分:0)
您应该创建另一个对象,例如名为Countries
,如下所示:
public class Countries {
private List<Country> countries;
// getters & setters
}
或:
public class Countries {
private Country[] countries;
// getters & setters
}
Country对象的列表或数组将映射到您期望的{"countries" : [{"name":"Andorra","code":"AD"},{"name":"United Arab Emirates","code":"AE"}]}
,因为JSON {}
引用了某个对象,[]
引用了Java代码中的列表/数组。
答案 2 :(得分:0)
实际上你也可以使用jackson库。
//创建ObjectMapper的obj
ObjectMapper mapper = new ObjectMapper();
//从mapper中获取Json字符串值
String json = mapper.writeValueAsString(obj)
然后在你的控制器方法中返回这个json字符串。
使用它的优点是,您还可以使用 @JsonIgnore 注释忽略POJO中的某些字段以进行JSON转换(将此注释放在要忽略的字段的getter之前) (不确定你是否可以从Spring ResponseEntity做同样的事情。
注意:如果我在任何地方都错了,请纠正我。