在 firebase 中插入 android POJO 会产生 json 值列表

Inserting android POJO in firebase results in json list of values

我在我的 android 项目中使用以下 class 将数据上传到其 firebase 后端。

public class IATFPojo {

public Double ecc, ecc2;
public boolean prenhes, ressinc;
public Long diasp, cl;
public String localiza, datacob;

public IATFPojo() {}

public IATFPojo(double ecc, boolean prenhes, boolean ressinc, long diasp, String localiza, String datacob, double ecc2, long cl){

    this.ecc = ecc;
    this.ecc2 = ecc2;

    this.prenhes = prenhes;
    this.ressinc = ressinc;

    this.diasp = diasp;
    this.cl = cl;

    this.localiza = localiza;
    this.datacob = datacob;
}

public Double getEcc() {
    return ecc;
}

public Double getEcc2() {
    return ecc2;
}

public boolean isPrenhes() {
    return prenhes;
}

public boolean isRessinc() {
    return ressinc;
}

public Long getDiasp() {
    return diasp;
}

public Long getCl() {
    return cl;
}

public String getLocaliza() {
    return localiza;
}

public String getDatacob() {
    return datacob;
}
}

然后我像这样将它插入到 firebase 中:

DatabaseReference myRef = FirebaseDatabase.getInstance().getReference();

IATFPojo pojo = new IATFPojo(
                    //ecc, prenhes, ressinc, diasp, localiza, datacob, ecc2, cl
                    (map.get("IATF6")).length() > 0 ? Double.parseDouble(map.get("IATF6")) : 0,
                    Integer.parseInt(map.get("IATF20")) > 1,
                    Integer.parseInt(map.get("IATF5")) > 1,
                    Long.parseLong(map.get("IATF30")),
                    map.get("IATF23"),
                    map.get("IATF1"),
                    (map.get("IATF22")).length() > 0 ? Double.parseDouble(map.get("IATF22")) : 0,
                    Long.parseLong(map.get("IATF21"))
            );

myRef.child(uid +"/MULTIPARA").child(map.get("IATF1")+"_"+map.get("SUI")).setValue(pojo);

它创建一个具有用户 ID (uid) 的节点和另一个具有引用 (MULTIPARA) 的节点,然后使用格式 date_animal id 创建包含数据的子节点。 问题是数据在 firebase 中是这样存储的:

据我所知,数据应该有这样的 IATFPojo 键:

2016-11-11_     A    335

ecc: 2.75

ecc2: 3

prenhes: true

ressinc : false

diasp: 52

cl: -1

localiza: "16 IATF BV 5"

datacob: "2016-11-11"

我是否在 class 或 firebase 的配置中遗漏了什么?

Cricket_007 的评论让我找到了答案。我在我的 android 项目中创建了一个新包,以包含所有 POJO 类 以上传到 firebase,然后将以下行包含到我的 proguard 规则中:

-keepnames class newPackage.** { *; }

所以现在我所有的 android POJO 都使用正确的字段键上传到 firebase。

谢谢cricket_007。