首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Firebase Cloud Firestore - Convert字符串到Java枚举

Firebase Cloud Firestore - Convert字符串到Java枚举
EN

Stack Overflow用户
提问于 2018-03-15 22:24:16
回答 1查看 4.6K关注 0票数 5

我正在尝试从我的Cloud Firestore中获取一些数据到我的Android应用程序中,但我在使用枚举时遇到了问题。我在Cloud Firestore中为枚举的值保存了一个字符串,但当我将收到的DocumentSnaphot转换为对象时,应用程序崩溃,因为它试图将字符串转换为基于枚举名称(与值不同)的枚举。

我得到的错误是(我发送的值是"NLD"):

代码语言:javascript
复制
java.lang.RuntimeException: Could not deserialize object. Could not find enum value of nl.gemoro.lgs.enums.CountryCode for value "NLD" (found in field 'address.countryCode') 

枚举如下所示:

代码语言:javascript
复制
public enum CountryCode {
    NETHERLANDS("NLD"),
    UNKNOWN("???");

    private final String value;

    CountryCode(String s) {
        value = s;
    }

    public boolean equalsValue(String otherValue) {
        return value.equals(otherValue);
    }

    public String toString() {
        return this.value;
    }
}

我使用此方法从Firestore获取数据,并将DocumentSnapshot转换为给定的类:

代码语言:javascript
复制
public static void getAllDocumentsConverted(String collection, final Class convertClass, final OperationCompletedListener listener) {
    FirebaseFirestore db = FirebaseFirestore.getInstance();
    db.collection(collection)
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "Found " + task.getResult().size() + " documents");
                        List<Object> list = new ArrayList<>();
                        List<String> ids = new ArrayList<>();
                        for (DocumentSnapshot document : task.getResult()) {
                            list.add(document.toObject(convertClass));
                            ids.add(document.getId());
                        }
                        listener.onOperationComplete(Result.SUCCESS, list, ids);
                    } else {
                        Log.d(TAG, "Error getting documents: ", task.getException());
                        listener.onOperationComplete(Result.FAILED);
                    }
                }
            });
}

我不确定是否有人能得到我想要的结果,但我真的希望它能以某种方式工作。

编辑:更清楚:如果枚举只是由枚举名称组成,或者如果名称和值相同,我可以将字符串转换为枚举。

提前谢谢。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49302008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档