Einfachen string als JSON-Rückgabe-Wert im Frühjahr die rest-controller

Werfen wir einen Blick auf die folgenden einfachen test controller (mit Feder 4.0.3):

@RestController
public class TestController
{
    @RequestMapping("/getList")
    public List<String> getList()
    {
        final List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        return list;
    }

    @RequestMapping("/getString")
    public String getString()
    {
        return "Hello World";
    }
}

In der Theorie sowohl controller als Methoden sollte die Rückkehr gültiges JSON. Aufruf der ersten controller-Methode tatsächlich nicht zurückgeben, die folgende JSON-array:

$ curl -i -H "Accept: application/json" http://localhost:8080/getList
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

["1","2"]

Aber der zweite controller-Methode gibt den string ohne Anführungszeichen, das ist kein gültiges JSON-string:

$ curl -i -H "Accept: application/json" http://localhost:8080/getString
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

Hello World

Warum ist das so? Kann es konfiguriert werden? Ist es ein bug? Oder ein feature, das ich nicht verstehe?

  • Schauen Sie in StringHttpMessageConverter die ia registriert, bevor die jackson-Konverter.
InformationsquelleAutor kayahr | 2014-05-10
Schreibe einen Kommentar