Firebase에서 개체를 검색했으며 값을 원하는 각 필드의 이름을 사용하여 개체의 값에 액세스하고 싶습니다. 자바 스크립트에서 이것은 myObject.name
객체에서 이름을 검색하는 것처럼 간단 합니다.
Java에서 해당 작업을 어떻게 수행 할 수 있습니까?
mDatabase = FirebaseDatabase.getInstance().getReference();
user = FirebaseAuth.getInstance().getCurrentUser();
userId = user.getUid();
ValueEventListener myObjectListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i(TAG, "getting data");
Object myObject = dataSnapshot.getValue();
Log.v(TAG, myObject.toString());
// Outputs: {name= "john doe", hair="brown", isStudent=true, age=12}
// HERE is where I would like to get the name.
// DOES NOT work. Have also attempted things like
// myObject.getString("name"), etc.
myObject.getClass().getFieldName("name")
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
}
};
mDatabase.child("users").child(userId).addValueEventListener(myObjectListener);
이 시도:
@SuppressWarnings("unchecked")
Map<String, Object> user = (Map<String, Object>) dataSnapshot.getValue();
String name = (String) user.get("name");
String hair = (String) user.get("hair");
long age = (Long) user.get("age");
...
적절하게 정의 된 User
클래스 가 있으면 이보다 더 잘 작동합니다.
User user = dataSnapshot.getValue(User.class);
String name = user.getName();
String hair = user.getHair();
...
마지막으로 세 번째 옵션 ( DataSnapshot.child(String)
방법 사용 )도 있습니다.
String name = (String) dataSnapshot.child("name").getValue();
String hair = (String) dataSnapshot.child("hair").getValue();
...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다