recherche

Maison  >  Questions et réponses  >  le corps du texte

java - SpringMVC中使用jackson返回json时如何将枚举转为json

SpringMVC中使用jackson返回json时如何将枚举转为json

在网上搜过,给出的方案是在要转换的枚举的get方法上加上@JsonValue注解,我加上后报了错
下面是我错误的示例:
StatusEnum:

IndexController:

POM.xml中jackson与Spring的版本号:

报的错:

怪我咯怪我咯2803 Il y a quelques jours848

répondre à tous(3)je répondrai

  • PHPz

    PHPz2017-04-18 10:03:21

    Mon approche consiste à écrire une méthode publique pour la convertir en Map
    Implémentez-la simplement aussi facilement que possible. En fait, je pense que l'annotation devrait être placée sur la méthode get de l'instance d'énumération

    .
    public class Result {
        private StatusEnum status;
        ...
        
        @JsonValue
        public StatusEnum getStatus() {
            return status;
        }
        
        public void setStatus(status) {
            this.status = status;
        }
    }

    Je ne l'ai jamais utilisé auparavant, donc je n'y connais pas grand-chose, mais vous pouvez l'essayer
    Je n'ai pas pu résister à ma curiosité et je l'ai essayé. . . Celui ci-dessus n’est pas réalisable. . . Mais n'utilisez pas @JsonValue

    @JsonFormat(shape = JsonFormat.Shape.OBJECT)
    public enum StatusEnum {
        STATUS_ERROR("200", "OK"),
        STATUS_SUCCESS(404, "Not Found");
        
        private Stringcode;
        private String msg;
        
        private Status(String code, String msg) {...}
    
        //getter & setter
        ...
    }

    Test perso, ça marche

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:03:21

    enumPar défaut, Jackson ne peut être sérialisé qu'en index et en noms d'énumération. Si vous devez renvoyer un objet {} json, vous devez implémenter Serializer
    Jdk8Module vous-même. StatusEnum vous-même.

    répondre
    0
  • PHPz

    PHPz2017-04-18 10:03:21

    Référence : http://blog.csdn.net/sdyy321/...

    Vous pouvez jeter un œil aux points suivants :

    1. SerializationFeature.WRITE_ENUMS_USING_TO_STRING

    2. @JsonSerialize et @JsonDeserialize;

    3. @JsonCreator

    4. Si vous avez juste besoin de sérialisation, vous pouvez utiliser 1 et
    pour l'implémenter simplement. Le premier est simple et le second est flexible

    Si vous avez besoin de désérialisation, vous pouvez utiliser @JsonSerialize et
    . . Le premier est flexible. Le second est facile :)@JsonDeserialize.

    répondre
    0
  • Annulerrépondre