当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Boot REST API中格式化返回的json?

益稳
2023-03-14

我使用Spring Boot创建了以下REST API。

@RestController
public class PersonController {
    
    @Autowired
    private PersonRepository PersonRepository;
    
    @PostMapping(value="/Person", produces = "application/json")
    public ResponseEntity<Person> addPerson(@RequestBody Person Person){
        
        Person newPerson = PersonRepository.save(Person);       
        
        return new ResponseEntity<Person>(newPerson, HttpStatus.OK) ;
    }

}

在Postman中,我选择:

发布

然后在body字段中放置以下json并点击send:

{"id":"", "name":"john", "age":"40", "email":"test@test.com"}

这是我得到的回报:

{
    "name": "john",
    "age": 40,
    "email": "test@test.com",
    "_links": {
        "self": {
            "href": "http://localhost:8080/person/10"
        },
        "person": {
            "href": "http://localhost:8080/person/10"
        }
    }
}

但是,我希望json以其他格式返回:

{
    "id": 10,
    "name": "john",
    "age": 40,
    "email": "test@test.com"
}

如何做到这一点?

共有2个答案

杨晓博
2023-03-14

我刚刚发现了问题。

在控制器中,代码是:

@PostMapping(value="/person"....

在《邮差》中,我打电话给:

http://localhost:8080/persons

(结尾是字母s)

结果它从未进入控制器方法。

当我从邮递员通话中删除s时,它起到了作用,并以我想要的方式返回了json。

现在

有趣的是,当使用字母s调用时,它确实保存到db并返回json,即使映射不正确。

所以我决定在调试模式下运行(使用不正确的映射),并注意到它没有进入方法。

这很奇怪。它如何正确地保存和返回json?

然后我决定注释掉所有的方法,并再次调用postman。

它再次将json保存到db中,并以第一种格式返回json。

看来这是在幕后进行的,肯定不是用我创造的方法。

郑晗日
2023-03-14

看起来您也在使用SpringDataRest,它会根据您的实体公开_links等。我猜SpringDataRest中的控制器是在您的请求中调用的,而不是您的自定义endpoint。尝试在您的控制器方法中记录一些内容以确保它确实被调用。如果您的服务的其他部分不需要SpringDataRest,您应该删除依赖项。

 类似资料:
  • 我正在使用的url-String newfullurl=“https://myappnametest.herokuapp.com/predict?{”+“”arr“”+“:[114.4756,31.57832,4.698017,1.834955,1.433942,1.388775,6.730856,12.19739,7.460399,4.807888,115.51131,69.19083,504.

  • 我看过很多关于SO的类似问题,但没有一个回答我的问题。 我有一个文件,内容如下: 我想重新格式化php或html代码,无论是全局还是选择。 我已经尝试了所有的选项,但它不起作用。 CtrlShiftp, 如果我更改了,然后它就可以工作了。

  • 点击按钮后,我尝试在< code>Text小部件中显示当前的< code>DateTime。下面的作品,但我想改变格式。 目前的做法 结果 问题 如何删除部分?

  • 本文向大家介绍Springmvc如何返回xml及json格式数据,包括了Springmvc如何返回xml及json格式数据的使用技巧和注意事项,需要的朋友参考一下 问:@ResponseBody注解怎么指定返回xml 还是json 答:@RequestMapping 的produces 属性指定 produces = "application/xml" 或者 produces = "applica

  • 问题内容: 在JavaScript中,从浮点数转换为字符串时,小数点后仅能获得2位数字吗?例如,用0.34代替0.3445434。 问题答案: var result = Math.round(original*100)/100; 具体细节,以防代码不言自明。 编辑:…或按照TimBüthe的建议使用。忘了那个,谢谢(和赞扬):)

  • 问题内容: 我正在尝试从标准ISO 8601 格式更改为好的MMM d yyyy hh:mm z格式,但是我当前的代码失败。 我正在从api接收时间和日期。 问题答案: A 是“ ISO-8601日历系统中没有时区的日期,例如2007-12-03”,因此那里没有足够的信息。使用代替。 同样,吞噬这样的异常会使得排除故障变得更加困难。当您不打算处理异常时,要么根本不捕获它,要么捕获并重新包装在Run