gpt4 book ai didi

Android firebase 9.0.0 setValue 序列化枚举

转载 作者:可可西里 更新时间:2023-11-01 19:01:27 26 4
gpt4 key购买 nike

我有这个类使用枚举。解析为 Firebase json 曾经工作得很好——使用 Jackson。迁移到 firebase-database:9.0.0 时,我得到以下信息:

com.google.firebase.database.DatabaseException: No properties to serialize found on class .... MyClass$Kind

其中 Kind 是枚举声明的类型。类(class):

public class MyClass {

public enum Kind {W,V,U};

private Double value;
private Kind kind;

/* Dummy Constructor */
public MyClass() {}

public Double getValue() {
return value;
}

public void setValue(Double value) {
this.value = value;
}

public Kind getKind() {
return kind;
}

public void setKind(Kind kind) {
this.kind = kind;
}
}

我怀疑 Firebase 在序列化 setValue(new MyClass()) 时不再使用 Jackson。

有没有办法让枚举类型序列化?或者一些明确说明序列化程序方法的方法?

最佳答案

你是对的,Firebase 数据库不再使用 Jackson 进行序列化或反序列化。

通过执行以下操作,您可以在与 Firebase 对话时将您的枚举表示为字符串:

public class MyClass {

public enum Kind {W,V,U};

private Double value;
private Kind kind;

/* Dummy Constructor */
public MyClass() {}

public Double getValue() {
return value;
}

public void setValue(Double value) {
this.value = value;
}

// The Firebase data mapper will ignore this
@Exclude
public Kind getKindVal() {
return kind;
}

public String getKind() {
// Convert enum to string
if (kind == null) {
return null;
} else {
return kind.name();
}
}

public void setKind(String kindString) {
// Get enum from string
if (kindString == null) {
this.kind = null;
} else {
this.kind = Kind.valueOf(kindString);
}
}
}

关于Android firebase 9.0.0 setValue 序列化枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37335712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com