Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Enums 无法处理spring数据中的枚举_Enums_Spring Data Mongodb - Fatal编程技术网

Enums 无法处理spring数据中的枚举

Enums 无法处理spring数据中的枚举,enums,spring-data-mongodb,Enums,Spring Data Mongodb,我使用枚举作为数据模型的一部分。当我反序列化输入json时,数据模型中的枚举不会被填充 你能给个建议吗 公共枚举访问类型枚举{ PUBLIC(1, "public"), PRIVATE(2, "private"), private int code; private String accessType; private AccessTypeEnum(int code, String accessType) { this.code = code; this.accessTyp

我使用枚举作为数据模型的一部分。当我反序列化输入json时,数据模型中的枚举不会被填充

你能给个建议吗


公共枚举访问类型枚举{

PUBLIC(1, "public"),
PRIVATE(2, "private"),

private int code;
private String accessType;

private AccessTypeEnum(int code, String accessType) {
    this.code = code;
    this.accessType = accessType;
}

public String getAccessType() {
    return accessType;
}

public int getCode() {
    return code;
}
}

我的输入是


{
“访问类型”:“公共”
}

反序列化

AccessTypeEnum e=gson.fromJson(inputJson,AccessTypeEnum.class)


您应该向所有枚举字段添加注释“SerializedName”。注释的文档如下所示:

您的枚举将如下所示

import com.google.gson.annotations.SerializedName;

public enum AccessTypeEnum {    
    @SerializedName("public") PUBLIC(1, "public"),
    @SerializedName("private") PRIVATE(2, "private"),

    private int code;
    private String accessType;

    private AccessTypeEnum(int code, String accessType) {
        this.code = code;
        this.accessType = accessType;
    }

    public String getAccessType() { return accessType; }
    public int getCode() { return code; }
}
另外请注意,您不能反序列化枚举,您应该使用包装器对象,如:

class MyObj {
    AccessTypeEnum accessType;
}

public static final void main(String args[]) {
    MyObj obj = new Gson().fromJson("{ \"accessType\": \"public\" }", MyObj.class);
    System.out.println("" + obj.accessType);
}

如果你接受我的回答,我将不胜感激。有关接受答案的所有信息可在此处找到,以供参考: