SpringBoot解析Json格式資料
@ResponseBody
注:該註解表示前端請求後端controller,後端響應請求返回 json
格式資料前端,實質就是將java物件序列化
1.建立Controller
注:springboot預設就已經支援返回json
格式資料,只需要加上@ResponseBody
註解即可
/**
* 通過 @responsebody 註解返回 json 格式資料
* @return
*/
@RequestMapping("/getAll")
@ResponseBody
public List<User> getUsers(){
ArrayList<User> users = new ArrayList<>();
for(int i=0; i < 10 ; i++){
User user = new User();
user.setId(String.valueOf(i));
user.setUsername("shanggushenlong>>>"+i);
user.setAge(i);
user.setBirthday(new Date());
users.add(user);
}
return users;
}
2.建立bean
public class User {
private String id;
private String username;
private Integer age;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date birthday;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", username='" + username + '\'' +
", age=" + age +
", birthday=" + birthday +
'}';
}
3.結果
@RequestBody
注:該註解表示前端發起請求時,要求請求體為 json
格式資料,實質就是反序列化到對應的物件中
1.建立controller
/**
* 前端傳入json資料,後端以String字串接收
* @param userStr
* @return
*/
@RequestMapping("/setUser")
@ResponseBody
public String getUser(@RequestBody String userStr){
System.out.println(userStr);
return userStr.toString();
}
/**
* 前端傳入json,後端用 user 物件接收,@RequestBody 能夠自動將前端傳入的json與bean
* 自動序列化對應成功一個例項物件
* @param user
* @return
*/
@RequestMapping("/setUser2")
@ResponseBody
public String getUser2(@RequestBody User user){
System.out.println(user);
return user.toString();
}
2.結果
- 使用
postman
發起請求,需要在body中新增相應的請求體 - 可能出現的問題:
時間格式轉換報錯
------ 解決方法,在bean
實體類中對應的birthday
欄位新增註解@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
HttpMessageConverter
springboot對於json預設支援的比較好,但是有時候需要自定義配置,比如上面的時間格式配置,假如你的專案有很多個bean,這個時候每一個bean去新增註解比較麻煩,這個時候就可以使用springboot提供的配置類,自己手動定義配置。
@Configuration
public class WebMvcConfig {
@Bean
MappingJackson2HttpMessageConverter MyHttpMessageConverter(){
// 1.建立一個 Convert
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
// 2. 建立objectmapper
ObjectMapper objectMapper = new ObjectMapper();
// 配置時間格式
objectMapper.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
converter.setObjectMapper(objectMapper);
return converter;
}
}
-
使用建立一個config類,使用
MappingJackson2HttpMessageConverter
類,手動新增json相關的配置 -
可能出現的問題:建立配置類,必須在類上新增註解
@Configuration
,且在方法上加上@Bean
,只有這樣配置才會生效。
結果如下:
注:此處可能產生的問題是:配置類寫了,沒有達到預期的效果,可能是 bean 類中該欄位註解沒有去掉 -
json
格式資料在前後分離的時代,是非常重要的一種資料格式,因此HttpMessageConverter
也變的很重要,我們可以在此相關類中配置相應的規則 -
springboot
提供的相關配置類JacksonHttpMessageConvertersConfiguration MappingJackson2HttpMessageConverter
希望自己能一直保持初衷,文章一直寫下去,和大家一起成長
本系列程式碼github地址:https://github.com/shanggushenlong/springboot-demo