2016-07-24 49 views
1

我有以下的JSON文件的Android火力的getValue()不工作

{ 
    "TestNode" : { 
     "TestKey" : "TestValue", 
     "TestKeyTwo" : "TestValueTwo" 
    }, 
    "TestNode2" : { 
     "One" : { 
      "ItemOne" : "[email protected]", 
      "ItemTwo" : "zYMnPqefn7BlGDidpOocff6Xcg==\nBKb1sfaDdgfe0=\n1yVcV0mciIQXtAf/4LqGdDw==\n", 
      "ItemThree" : "name" 
     }, 
     "Two" : { 
      "email" : "[email protected]", 
      "password" : "xFBvDPcnp/efebUhtefZ0+XMFfw==\ngAb5fSbzAefeQXc=\ng/WdCpusQl2umtPVOefefzjs1A==\n", 
      "username" : "othername" 
     } 
    } 
} 

監聽器代碼

TestNode.addListenerForSingleValueEvent(new ValueEventListener() { 

    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 

     if(dataSnapshot.hasChild(TestKey)) { 
      String TestKeyString = TestNode.child(TestKey).getKey(); 
      String TestValueString = TestNode.child(TestKey).getValue(); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}); 

,我得到的錯誤

廣東話解決方法GetValue() ;

PS我還沒有運行的代碼,但因爲上述錯誤

+3

您的問題未提供足夠的信息。發佈監聽器的代碼返回'TestNode'的'DataSnapshot'。另外,這個語句似乎並不合法:'String TestKey = TestNode.child(TestKey).getKey();'。如何在初始化之前使用'TestKey'?還要將代碼發佈到堆棧跟蹤中。 –

+0

我更新了問題 – TerribleCoder

回答

0

試試這個代碼:

TestNode.addListenerForSingleValueEvent(new ValueEventListener() { 

@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    Log.d("TEST","key: "+dataSnapshot.getKey()); 
    Log.d("TEST","value: "+dataSnapshot.getValue()); 
} 

@Override 
public void onCancelled(DatabaseError databaseError) {} 
}); 

更新
試試這個代碼來獲取只有一個孩子

TestNode.orderByKey().equalTo(TestKey).addListenerForSingleValueEvent(new ValueEventListener() { 

@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    Log.d("TEST","key: "+dataSnapshot.getKey()); 
    Log.d("TEST","value: "+dataSnapshot.getValue()); 
} 

@Override 
public void onCancelled(DatabaseError databaseError) {} 
}); 
+0

這將打印出TestNode下的每個孩子,我只想要一個特定的一個 – TerribleCoder

+0

@TerribleCoder看到我的更新 –

+0

說明它的工作 – TerribleCoder

0

這是您的更新代碼,這將是wor k肯定:

TestNode.addListenerForSingleValueEvent(new ValueEventListener() { 

@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 

    if(dataSnapshot.hasChild(TestKey)) { 


String TestValueString = dataSnapshot.child(TestKey).getValue(String.class); 

    } 
} 

@Override 
public void onCancelled(DatabaseError databaseError) {} 
}); 

希望這可以解決這個問題。這給你的密鑰本身的具體價值。

+0

這也工作謝謝 – TerribleCoder

相關問題