簡體   English   中英

為什么 Spring Boot 返回一個字符串而不是 JSON

[英]why is Spring Boot returning a string instead of JSON

根據這個問題,我的方法應該是通過傑克遜發送一個 JSON 對象:

在 Spring Boot 中返回 JSON 對象作為響應

但是我在客戶端收到一個字符串。

以下是相關部分:

@CrossOrigin(origins = "*")
@RestController
public class AuthController {

 @PostMapping("/api/signup")
    public String signup(HttpServletRequest request, HttpServletResponse response){
      return "{'status':'fail', 'message':'foo'}";
    }
}

你明確地說return "some string"; 所以它可以滿足您的要求。

相反,您應該構造一個對象。 我將定義以下類和枚舉:

public class SignupDto {
    private Status status;
    private String message;

    public SignupDto() {
    }

    public SignupDto(Status status, String message) {
        this.status = status;
        this.message = message;
    }

    public Status getStatus() {
        return status;
    }

    public void setStatus(Status status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public enum Status {
        FAIL,
        SUCCESS
    }        
}

並按如下方式使用它:

public SignupDto signup(HttpServletRequest request, HttpServletResponse response) {
  return new SignupDto(SignupDto.Status.FAIL, "foo");
}

Jackson 將自動進行序列化。

雖然您對單引號是正確的,但如果您不想,您可以在不使用 DTO 的情況下實現 JSON 響應。 你可以試試這個:

@PostMapping("/api/signup")
public ResponseEntity signup(HttpServletRequest request, HttpServletResponse response) {
    return ResponseEntity
            .status(<http_status>)
            .contentType(MediaType.APPLICATION_JSON)
            .body("{\"status\":\"fail\", \"message\":\"foo\"}");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM