如何获取父节点的值作为字符串?
所以在上面的数据结构中,我想获得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回购 ,以获得一个很好的例子。