2016-11-26 78 views
2

我有这样的JSON结构上我的火力点数据库:获取JsonArray从火力

{ 
    "companies": [{ 
    "name": "Soft", 
    "position": "Developer", 
    "location": "NY", 
    "start": 1462060800, 
    "end": 1470009600, 
    "description" : ""}, 
    { 
    "name": "Xpert", 
    "position": "Developer", 
    "location": "London", 
    "start": 1456790400, 
    "end": 1462060800, 
    "description" : ""}, 
    { 
    "name": "AXinformation", 
    "position": "Developer", 
    "location": "Paris", 
    "start": 1388534400, 
    "end": 1456790400, 
    "description" : " "}, 
    ..... 
    ..... 
    ..... 

我试图获得这些数据做这样的事情在我的代码

public void onCallingFireBaseExperience() { 
     final FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     final DatabaseReference myRef = database.getReference("companies"); 
     myRef.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 

       for (DataSnapshot dataSnapshot1: dataSnapshot.getChildren()){ 
        Log.d(Constans.LOG, dataSnapshot1.child("name").getValue().toString()) 
       } 

      } 

      @Override 
      public void onCancelled(DatabaseError error) { 
       Log.d(Constans.LOG, "Failed to read value.", error.toException()); 

      } 
     }); 
    } 

但我始终面临着一个在我的记忆logcat中位置

.google.firebase.database.DataSnapshot $ -1 @ f264efd

我在做什么错了?我如何迭代数据?

回答

1

这是因为火力地堡不支持存储阵列本身

火力地堡有数组没有原生支持。如果你存储一个数组,它实际上被存储为一个“整数”作为键名的“对象”。

请从官方博客火力地堡检查此link获得为什么数组不支持的更多信息,你应该如何正确地组织你的数据,以弥补它。

因此,基本上,根据Firebase,您构建数据的方式不正确,因为其中dataSnapshot.getChildren()根本不会给您任何子女。