spring mvc rest response json and xml

后端 未结 7 1861
無奈伤痛
無奈伤痛 2020-12-28 19:24

I have the requirement to return the result from the database either as a string in xml-structure or as json-structure. I\'ve got a solution, but I don\'t know, if this one

相关标签:
7条回答
  • 2020-12-28 20:18

    After a lot research i think i have a good solution for this: very simple, spring by default, uses Jackson to working with Json, that library comes in the spring-boot-starter-web, but the Xml extention of Jackson doesn't come by default, all you need to do is import in your build.gradle or in your pom.xml the jackson-dataformat-xml dependency and now you can alternate between json or xml for example with a code like this:

    @PostMapping(value = "/personjson")
    public ResponseEntity<?> getJsonPerson (@RequestBody Person person) {
        return ResponseEntity.accepted().contentType(MediaType.APPLICATION_JSON)
        .body(person);
    }
    
    @PostMapping(value = "/personxml")
    public ResponseEntity<?> getXmlPerson (@RequestBody Person person) {
        return ResponseEntity.accepted().contentType(MediaType.APPLICATION_XML)
        .body(person);
    }
    

    Where person is a bean (only have the @Component tag), Lock at that both codes are equal only the MediaType is different and it works!!, isn't nesesary too add the "produces" and "consumes" atributes to the Mapping tag, because Spring, by default, can consume both Json and Xml, i did an example sending a Json and getting. xml, and sending xml getting a Json, only you need to specify in your postman or in curl when you do the request, the correct header of the body that you are sending either application/json or application/xml.

    Note: this is only a way a todo this, JAXB and XmlRootElement, is other way to do it.

    0 讨论(0)
提交回复
热议问题