Springboot返回json格式

Posted xwh130

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot返回json格式相关的知识,希望对你有一定的参考价值。

Springboot返回json格式

1、技术概述

该技术是解决springboot如何返回json格式的问题。学习该技术的起因是我们组的项目需要接口返回json格式,有时还需要多重嵌套返回要求的格式。技术难点
主要在返回嵌套json格式,如何正确的装配并返回也是一个难点。

2、技术详述

核心是使用RestController关键字

@RestController
public class UserController {

  @Autowired
  private UserService userService;

  /*用户登录
  *@成功返回true
  * */
  @PostMapping(value = "/login")
  public HashMap<String, Object> login(@RequestBody User user){
      return  userService.loginCheck(user);
  }

  /*用户注册
  * @成功返回true
  * */
  @ResponseBody
  @PostMapping(value = "/register")
  public HashMap<String, Object> register(@RequestBody User user){
      return userService.registerCheck(user);
  }

  /*修改个人信息
  * 成功返回true
  * */
  @ResponseBody
  @PostMapping(value = "/user/update")
  public HashMap<String,Object> update(@RequestBody User user){
      return userService.updateCheck(user);
  }

  /*修改密码
  * 成功返回true
   */
  @ResponseBody
  @PostMapping(value = "/user/update/password")
  public HashMap<String,Object> updatePassword(@RequestBody User user){
      return userService.updatePassword(user);
  }
}  

在service中返回Map
将要返回的信息写入map中,如以下代码中的result.put就是写的过程。可以将对象写入map中,如result.put("data",user);

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
	@Transactional(rollbackFor = Exception.class)
    public HashMap<String,Object> updatePassword(User user){
        User user1 = userRepository.findByUserId(user.getUserId());
        HashMap<String,Object> result = new HashMap<>();
        try {
            if (user1!=null){
                user1.setPassword(user.getPassword());
                userRepository.save(user1);
                result.put("status",1);
                result.put("msg","修改成功");
            }
            else {
                result.put("status",0);
                result.put("msg","修改失败");
            }
        }
        catch (Exception e){
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            result.put("status",0);
            result.put("msg","修改失败");
            return result;
        }
        return  result;
    }
}

以上方法即可解决返回json格式的问题

3、技术使用中遇到的问题和解决过程。

问题:遇到的问题如何在嵌套json中读取数据。
解决方法:使用List读取最外层的标签,层层剖析。

 List<List> list = (List<List>) submitOuter.getContent().get("tableData");
                for (int i = 0; i < list.size(); i++) {
                    String str = (String) list.get(i).get(list.get(i).size()-1);
                    int id = (int) list.get(i).get(0);
                    GroupSuggestion groupSuggestion = new GroupSuggestion();
                    groupSuggestion.setSuggestion(str);
                    groupSuggestion.setEvaluationOuterId(submitOuter.getEvaluationOuterId());
                    groupSuggestion.setGroupId(id);
                    groupSuggestionRepository.save(groupSuggestion);
                }

4、总结。

Springboot下的json数据格式处理不是特别复杂,主要是灵活运用Map、List等方法对数据处理后,返回json格式。

5、列出参考文献、参考博客(标题、作者、链接)。

参考文献:
https://www.cnblogs.com/hbolin/p/10657388.html





以上是关于Springboot返回json格式的主要内容,如果未能解决你的问题,请参考以下文章

springboot 设置页面返回json的时间格式

spring web(SpringBoot,SpringMVC)项目中返回自定义格式的JSON,不暴露不必要的字段

springboot处理统一返回json数据格式

SpringBoot学习笔记:处理前端JSON返回的日期的格式

SpringBoot RestController 同时支持返回xml和json格式数据

SpringBoot返回json和xml