如何获取父节点的值作为字符串?

Firebase图片

所以在上面的数据结构中,我想获得Aprilia Caponord 1200价值(在图中标出)。 我有对Aprilia (根节点)的Firebase引用,我可以获取所有键/值对数据。

这是我的代码

 @override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot child : dataSnapshot.getChild()) { Map value = (Map) child.getValue(); String bike_price = value.get("price").toString(); String image_url = value.get("image_url").toString(); } } 

很明显,我可以获得具有键/值关系的子节点的所有值。 但我无法专门获取父节点的名称。 那么如何以String格式获取父节点的值?

如果我打印child.getValue().toString() ,我得到JSON值,但我对解析JSON不感兴趣。 是否有任何特定的方法来获取父节点值?

 {Aprilia Caponord 1200={image_url=____________, price=18.35}.. } 

您可能正在寻找DataSnapshot上的getKey()方法:

  mFirebaseRef = new Firebase("https://yours.firebaseio.com"); mFirebaseRef.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot child: dataSnapshot.getChildren()) { Log.i("MainActivity", child.getKey()); } } @Override public void onCancelled(FirebaseError firebaseError) { Log.e("MainActivity", "onCancelled", firebaseError.toException()); } }); 

这里有几点需要注意:

  • 我将代码中的getChildren()更改为getChildren() ,因为我没有知道getChild()方法。
  • 您应该考虑使用addChildEventListener ,它在较低级别的节点上提供DataSnapshots
  • 如果您为汽车创建“包装类”,事情会变得相当容易。 然后,适用于Android的Firebase SDK会自动将JSON解包到该类的实例中。 请参阅我们的AndroidChat回购 ,以获得一个很好的例子。