在Spring中如何将enum作为响应发送到控制器中

时间:2018-02-22 11:43:26

标签: spring spring-mvc

我有Enum Class。我需要从Spring控制器发送一个Enum类响应。 我无法理解如何在Spring控制器中将类作为Response发送。请帮助我。

2 个答案:

答案 0 :(得分:1)

如果你想要返回所有枚举值而不是尝试这样的东西:

@GetMapping("enum")
public List<MyEnum> paymentMethods() {
    return Arrays.asList(MyEnum.values());
}

public enum MyEnum {
    FIRST, SECOND, THIRD;
}

答案 1 :(得分:1)

您可以在响应中添加杰克逊可以反序列化的任何内容

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HelloControllerTest {

    @Autowired
    private MockMvc mvc;

    @Test
    public void monday() throws Exception {
        String json = new ObjectMapper().writeValueAsString(DayOfWeek.MONDAY);
        mvc.perform(MockMvcRequestBuilders.get("/monday").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
                .andExpect(content().string(equalTo(json)));
    }

    @Test
    public void days() throws Exception {
        String json = new ObjectMapper().writeValueAsString(Arrays.asList(DayOfWeek.values()));
        mvc.perform(MockMvcRequestBuilders.get("/days").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
                .andExpect(content().string(equalTo(json)));
    }
}

您可以通过以下测试向自己证明这一点,只需手动执行Jacskon反序列化

keywords: "This is a key phrase\r\nThis is a key phrase too\r\nThis is also a key phrase"