如何在 Firebase 中表示嵌套数据 class

How to represent nested data in Firebase class

取自 Firebase 示例,如果我有这样的恐龙事实数据结构:

{
  "lambeosaurus": {
    "name": "lamby",
    "work": "eat",
    "dimensions": {
      "height" : 2.1,
      "length" : 12.5,
      "weight": 5000
    }
  },
  "stegosaurus": {
    "name": "stego",
    "work": "play",
    "dimensions": {
      "height" : 4,
      "length" : 9,
      "weight" : 2500
    }
  }
}

如何在 Android Class 中表示此结构以便 Firebase 从 DataSnapshot.getValue(DinosaurFacts.class) 投射?

name, work 表示为字符串,但是class中的"dimensions"集合如何表示?

另外,如何从 DataSnapshot 中获取有关身高和体重的数据值?

编辑 我可以让各个元素在快照中循环,但我试图找到如何在 class 结构中表示数据。

for(DataSnapshot child : dataSnapshot.getChildren()) {

                Log.d("hz-key:", child.getKey().toString());
                Log.d("hz-val:", child.getValue().toString());
            }

表示此结构的 JavaBean class 是:

public static class DinosaurFacts {
    String name;
    String work;
    Dimensions dimensions;

    public String getName() {
        return name;
    }

    public String getWork() {
        return work;
    }

    public Dimensions getDimensions() {
        return dimensions;
    }

    public class Dimensions {
        double height;
        long weight;
        double length;

        public double getHeight() {
            return height;
        }

        public long getWeight() {
            return weight;
        }

        public double getLength() {
            return length;
        }
    }
}

然后你可以阅读恐龙:

DinosaurFacts dino = dinoSnapshot.getValue(DinosaurFacts.class);

并访问维度,例如:

dino.getDimensions().getWeight();

我遵循了 Frank 的回答,但我收到一条错误消息:

subclass needs an empty constructor

虽然我有一个。

解法:

为其创建一个新的(外部)class。


这是我的例子:

第一 Class:

public class Event {

    private String name;
    private Place place;
}

子Class:

public class Place {

     private String name;
     private Location location;

}

子Class的子:

public class Location {

     private String city;
     private Double longitude, latitude;

}