java - SpringMVC中使用jackson返回json时如何将枚举转为json
怪我咯
怪我咯 2017-04-18 10:01:21
0
3
823

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

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

IndexController:

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

报的错:

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(3)
PHPzhong

Pendekatan saya ialah menulis kaedah awam untuk menukarnya kepada Map
Hanya laksanakannya semudah mungkin, saya rasa anotasi harus diletakkan pada kaedah get bagi contoh penghitungan

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

Saya tidak pernah menggunakan ini sebelum ini, jadi saya tidak tahu banyak tentangnya, tetapi anda boleh mencubanya
Saya tidak dapat menahan rasa ingin tahu saya dan mencubanya. . . Yang di atas tidak boleh dilaksanakan. . . Tetapi jangan gunakan @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
    ...
}

Ujian peribadi, ia berfungsi

Ty80

enumSecara lalai jackson hanya boleh disirikan ke dalam nama indeks dan penghitungan Jika anda perlu mengembalikan objek json {}, anda perlu melaksanakan sendiri Serializer
Modul Jdk8 StatusEnum diri sendiri.

PHPzhong

Rujukan: http://blog.csdn.net/sdyy321/...

Anda boleh lihat perkara berikut:

  1. SerializationFeature.WRITE_ENUMS_USING_TO_STRING;

  2. @JsonSerialize dan @JsonDeserialize;

  3. @JsonCreator

  4. Jika anda hanya memerlukan pensirilan, anda boleh menggunakan 1 dan
untuk melaksanakannya dengan mudah dan yang kedua adalah fleksibel

Jika anda memerlukan penyahsiran, anda boleh menggunakan @JsonSerialize dan
. . Yang pertama adalah fleksibel :)@JsonDeserialize

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan