JSON序列化到Java枚举 [英] Deserialize JSON to Java enum

查看:537
本文介绍了JSON序列化到Java枚举的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Java的Andr​​oid设备上的下列枚举,我想能够反序列化的传入JSON字符串/对象整数到这个枚举类型。我已经越来越对JSON.org包,我使用的杰克逊和GSON但​​没有命中。

有没有一种简单的方法来做到这一点还是需要改变JSON德codeR?谢谢你。

 公共枚举ValueEnum {    一(1),
    二(2),
    三(3);    私人int值;    私人ValueEnum(int值){
        THIS.VALUE =价值;
    }    公众诠释的getValue(){
        返回值;
    }
}


解决方案

ValueEnum.values​​()将返回ValueEnum的[]数组,那么你可以遍历数组,检查

 公共静态ValueEnum的valueOf(int值){
        ValueEnum [] = valueEnums ValueEnum.values​​();
        对于(ValueEnum valueEnum:valueEnums){
            如果(valueEnum.getValue()==值)
            {
                返回valueEnum;
            }
        }
        返回默认值;
    }

I have the following enumeration in Java on Android and I would like to be able to deserialize an integer in an incoming JSON string/object into this Enum type. I have been getting hits on Jackson and GSON but nothing on the JSON.org package, which I am using.

Is there an easy way to do this or do I need to alter the JSON decoder? Thanks.

public enum ValueEnum {

    ONE(1),
    TWO(2),
    THREE(3);

    private int value;

    private ValueEnum(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }   
}

解决方案

ValueEnum.values() will return you array of ValueEnum[] then you can iterate over array and check for Value

public static ValueEnum valueOf(int value) {
        ValueEnum[] valueEnums = ValueEnum.values();
        for (ValueEnum valueEnum : valueEnums) {
            if (valueEnum.getValue() == value)
            {
                return valueEnum;
            }
        }
        return DEFAULT;
    }

这篇关于JSON序列化到Java枚举的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆