com.google.firebase.database.DatabaseException:Can';t将java.lang.Long类型的对象转换为类型(模型类)
我尽了很大努力,但我无法将com.google.firebase.database.DatabaseException:Can';t将java.lang.Long类型的对象转换为类型(模型类),java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我尽了很大努力,但我无法将java.lang.Long类型的对象转换为类型(我的模型类) 我正在上传下面的getDataFromFirebase()方法: MainActivity.class JSON数据 错误是: com.google.firebase.database.DatabaseException:无法将java.lang.Long类型的对象转换为com.psb.aurumdesign.ProjectModel$ProjectDetailsBean类型 您将收到以下错误: com.
java.lang.Long
类型的对象转换为类型(我的模型类)
我正在上传下面的getDataFromFirebase()
方法:
MainActivity.class
JSON数据 错误是: com.google.firebase.database.DatabaseException:无法将java.lang.Long类型的对象转换为com.psb.aurumdesign.ProjectModel$ProjectDetailsBean类型
您将收到以下错误: com.google.firebase.database.DatabaseException:无法将java.lang.Long类型的对象转换为com.psb.aurumdesign.ProjectModel$ProjectDetailsBean类型 因为您正试图将Long类型的
project\u details
节点的第一个子节点转换为ProjectDetailsBean
类型的对象,这实际上是不可能的。正如我在JSON模式中所看到的,在project\u details
节点下,实际上只有一个对象,因此不需要通过实际循环子对象来获取数据。您只需将该对象直接映射到类型为ProjectDetailsBean
的对象,如下代码行所示:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference projectDetailsRef = rootRef.child("project_details");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ProjectDetailsBean projectDetailsBean = dataSnapshot.getValue(ProjectDetailsBean.class);
Log.d("TAG", projectDetailsBean.getProject_name());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
};
projectDetailsRef.addListenerForSingleValueEvent(valueEventListener);
logcat中的结果将是项目的名称。例如,如果只需要单个属性的值,则可以更改以下代码行:
ProjectDetailsBean projectDetailsBean = dataSnapshot.getValue(ProjectDetailsBean.class);
致:
请编辑您的问题,将失败的JSON包含在
project\u details
中(作为文本,请不要截图)。您可以通过单击溢出菜单中的“导出JSON”链接来实现这一点(⠇) 在你的座位上。
{
"project_details" : {
"architect_no" : 1,
"client_name" : "pratik bharad",
"payment_received" : "yes",
"project_complete_date" : "22/09/2020",
"project_name" : "project of building",
"project_no" : 1,
"project_received_date" : "22/06/2020"
}
}
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference projectDetailsRef = rootRef.child("project_details");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ProjectDetailsBean projectDetailsBean = dataSnapshot.getValue(ProjectDetailsBean.class);
Log.d("TAG", projectDetailsBean.getProject_name());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
};
projectDetailsRef.addListenerForSingleValueEvent(valueEventListener);
ProjectDetailsBean projectDetailsBean = dataSnapshot.getValue(ProjectDetailsBean.class);
String projectName = dataSnapshot.child("project_name").getValue(String.class);