【问题标题】:Enum type of conversion when using Spring web service使用 Spring Web 服务时的枚举类型转换
【发布时间】:2014-03-07 02:02:00
【问题描述】:

这将是以下问题的扩展:

Spring web service request and response for mapping having list of other objects

如果 Question POJO 有枚举类型怎么办。在发出请求和使用@RequestBody 时,我如何在ajax 调用中表示这一点。

例如:

public class Question {

    private String questionText;

    List<Options> options;

    private QuestionTye questionType

    public String getQuestionText() {
        return questionText;
    }

    public void setQuestionText(String questionText) {
        this.questionText = questionText;
    }

    //getters and setters for options


}

枚举如下:

public enum QuestionType {

    MCQ, FILL_IN_THE_BLANK, QUESTION_AND_ANSWER, MATCH_THE_FOLLOWING

}

在将 JSON 发送到服务器时,我应该如何格式化它?

【问题讨论】:

  • 尝试序列化你当前拥有的pojo。结果将是您需要的 json 格式。
  • 序列化到底是什么意思?我可以扩展可序列化。但是然后呢?
  • 没有。 Spring 使用 Jackson 将对象转换为 json 字符串。直接试试吧。
  • 是的。我使用了 Google 的名为 GSON 的 JSON 转换器库,效果很好。我什至不必写文件或任何东西。只是一个系统输出帮助。再次感谢您的意见。
  • 请注意,Spring 默认使用 Jackson,因此您可能也应该使用它进行测试。

标签: java spring spring-mvc enums


【解决方案1】:

假设您在 classpatch 上有 jackson API,请添加一个带注释的“Create”方法。我还想在我的枚举中添加一个“无”选项以避免空指针:

public enum QuestionType {

    MCQ, FILL_IN_THE_BLANK, QUESTION_AND_ANSWER, MATCH_THE_FOLLOWING, NONE;

    @JsonCreator
    public QuestionType create(String input){

        QuestionType result;
        if("MCQ".equals(input)){

            result = MCQ;
        }
        else if(/*snip etc*/){

        }//etc
        else{

           result = NONE;//Or null or throw an exception .. whatever
        }
        return result;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-21
    • 2010-09-24
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多