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);