Tôi có một bộ điều khiển Spring MVC với phương thức sau:Spring MVC restcontroller trở json chuỗi
@RequestMapping(value = "/stringtest", method = RequestMethod.GET)
public String simpletest() throws Exception {
return "test";
}
này nằm bên trong một bộ điều khiển bắt đầu như thế này:
@RestController
@RequestMapping(value = "/root")
public class RootController
Khi tôi gọi các phương thức khác mà trả về các đối tượng, các đối tượng này được Jackson tuần tự hóa thành JSON. Nhưng phương thức này trả về một String không được chuyển thành JSON. Trong trường hợp không rõ ràng, đây là ví dụ sử dụng curl:
$curl http://localhost:8080/clapi/root/stringtest
test
Vì vậy, vấn đề "kiểm tra" không có dấu ngoặc kép không phải là chuỗi JSON, nhưng khách hàng REST của tôi đang mong đợi một chuỗi. Tôi mong đợi lệnh curl để hiển thị chuỗi đó với dấu ngoặc kép xung quanh nó để nó hợp pháp JSON thay thế:
"test"
Tôi đang sử dụng Spring WebMVC 4.1.3 và Jackson 2.4.3. Tôi đã thử thêm thuộc tính "produce" vào RequestMapping để nói nó sẽ trả về JSON. Trong trường hợp này, thuộc tính Content-Type được gửi trở lại là "application/json" nhưng vẫn là chuỗi kiểm tra không được trích dẫn.
tôi có thể workaround này bằng cách gọi một thư viện JSON để chuyển đổi bằng Java String để JSON, nhưng nó có vẻ như Spring MVC và Jackson thường làm điều này tự động. Tuy nhiên bằng cách nào đó họ không làm điều đó trong trường hợp của tôi. Bất kỳ ý tưởng những gì tôi có thể đã cấu hình sai để được nhận chỉ kiểm tra lại thay vì "thử nghiệm"?
Bạn có thể thử gói Chuỗi của bạn trong một Object. Nếu không, không có cách nào cho Jackson để biết tên gì để cung cấp cho phím JSON của String của bạn. – Matt
@ Chạy một chuỗi đơn thuần là JSON hợp lệ, nó không cần phải là một đối tượng. Ví dụ, ngay cả một mảng hoạt động tốt. Nếu tôi thay đổi mã để trả về một mảng, thì tôi nhận được '[" test "]'. Vì vậy, tôi hy vọng nếu tôi trả về một chuỗi đơn giản, tôi sẽ nhận được '" test "' –
Đây không phải là quá rõ ràng, nhìn vào câu trả lời này: http://stackoverflow.com/a/7487892/369946. Theo định nghĩa RFC của kiểu phương tiện "application/json", JSON phải là một đối tượng hoặc một mảng. – Matt