如何在 Java 中将 class 显示为 JSON 响应?
How to display class as a JSON response in Java?
目前我正在处理 spring 项目,我想将 class 显示为 JSON 响应。以下是 class 模板和其他相关详细信息。
public class 国家 {
@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...}]
除了状态和消息,它也可以是一些数组列表。
您需要创建 class 包含列表并使用 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);
}
}
您应该创建另一个对象,例如调用 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 {}
指代某个对象而 []
指代 [=22] =] 在 Java 代码中。
其实你也可以使用jackson库来实现
//创建ObjectMapper的obj
ObjectMapper mapper = new ObjectMapper();
//从映射器中获取Json字符串值
String json = mapper.writeValueAsString(obj)
然后 return 这个 json 字符串在你的控制器方法中。
这样做的好处是,您还可以使用 @JsonIgnore 注释忽略 POJO 中用于 JSON 转换的某些字段(放此注释位于您要忽略的字段的 getter 之前)(不确定您是否可以从 Spring ResponseEntity 执行相同的操作。
注:如有不对请指正
目前我正在处理 spring 项目,我想将 class 显示为 JSON 响应。以下是 class 模板和其他相关详细信息。
public class 国家 {
@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...}]
除了状态和消息,它也可以是一些数组列表。
您需要创建 class 包含列表并使用 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);
}
}
您应该创建另一个对象,例如调用 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 {}
指代某个对象而 []
指代 [=22] =] 在 Java 代码中。
其实你也可以使用jackson库来实现
//创建ObjectMapper的obj
ObjectMapper mapper = new ObjectMapper();
//从映射器中获取Json字符串值
String json = mapper.writeValueAsString(obj)
然后 return 这个 json 字符串在你的控制器方法中。
这样做的好处是,您还可以使用 @JsonIgnore 注释忽略 POJO 中用于 JSON 转换的某些字段(放此注释位于您要忽略的字段的 getter 之前)(不确定您是否可以从 Spring ResponseEntity 执行相同的操作。
注:如有不对请指正