Rzućmy okiem na następującym prostym kontrolerem testowym (używane z wiosny 4.0.3):Prosty ciąg jako JSON wartości zwracanej w kontrolerze spoczynkowej sprężyna
@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";
}
}
Teoretycznie obie metody kontroler powinien powrócić ważny JSON. Wywołanie pierwsza metoda kontroler rzeczywiście ma zwrócić następujący JSON tablicy:
$ curl -i -H "Accept: application/json" http://localhost:8080/getList
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
["1","2"]
ale druga metoda kontrolera Zwraca ciąg bez cudzysłowu, który nie jest prawidłowy ciąg JSON:
$ curl -i -H "Accept: application/json" http://localhost:8080/getString
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Hello World
Dlaczego tak jest? Czy można to skonfigurować? Czy to błąd? Czy funkcja, której nie rozumiem?
Zajrzyj do 'StringHttpMessageConverter', który jest zarejestrowany przed konwerterem jackson. –