You need to enable JavaScript to run this app. Firebase使用setValue传入Model类对象时存储数据格式异常
优惠活动
大模型
产品
解决方案
定价
更多

Firebase使用setValue传入Model类对象时存储数据格式异常

Firebase写入数据格式异常问题

请在将本问题标记为重复问题前先理解我的场景,我已在本站检索了一段时间,未找到对应解决方案。

我通过Fragment调用setValue(Model类对象)方法向Firebase写入数据,但数据并未按照预期格式存储。

相关实现代码

Fragment 部分代码

public class FragmentSelectRoute extends Fragment {

RadioGroup radioGroup;
private int routeId;
private String routeTitle;
Button btnFinish;

// Firebase
FirebaseDatabase database;
DatabaseReference studentRef;

// FirebaseAUth
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();

public FragmentSelectRoute() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_select_route, container, false);

    database = FirebaseDatabase.getInstance();
    studentRef = database.getReference(Common.STUDENT_REFERENCE);

    radioGroup = view.findViewById(R.id.radio_select_route);
    btnFinish = view.findViewById(R.id.btn_finish);




    Bundle bundle = this.getArguments();

    String firstName = bundle.getString("firstName");
    String lastName = bundle.getString("lastName");
    String regNo = bundle.getString("regNo");
    String gender = bundle.getString("gender");
    String campus = bundle.getString("campus");
    String dept = bundle.getString("dept");
    String program = bundle.getString("program");
    String semester = bundle.getString("semester");


    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            switch (i) {
                case R.id.rdbtn_route_one:
                    routeId = 1;
                    routeTitle = "Lari Adda";
                    break;
                case R.id.rdbtn_route_two:
                    routeId = 2;
                    routeTitle = "Rehman Plaza";
                    break;
                case R.id.rdbtn_route_three:
                    routeId = 3;
                    routeTitle = "Aziz Bhatti Town";
                    break;
                case R.id.rdbtn_route_four:
                    routeId = 4;
                    routeTitle = "Gill Wala";
                    break;
                case R.id.rdbtn_route_five:
                    routeId = 5;
                    routeTitle = "Mela Mandi Ground";
                    break;
                case R.id.rdbtn_route_six:
                    routeId = 6;
                    routeTitle = "Bhera";
                    break;
                case R.id.rdbtn_route_seven:
                    routeId = 7;
                    routeTitle = "Jahurabad";
                    break;
                case R.id.rdbtn_route_eight:
                    routeId = 8;
                    routeTitle = "Nihang";
                    break;
                case R.id.rdbtn_route_nine:
                    routeId = 9;
                    routeTitle = "Farooka";
                    break;
                case R.id.rdbtn_route_ten:
                    routeId = 10;
                    routeTitle = "Silanwali";
                    break;
                case R.id.rdbtn_route_eleven:
                    routeId = 11;
                    routeTitle = "Chiniot";
                    break;
                case R.id.rdbtn_route_twelve:
                    routeId = 12;
                    routeTitle = "Laliyan";
                    break;
                case R.id.rdbtn_route_thirteen:
                    routeId = 13;
                    routeTitle = "Kandiwal";
                    break;
                case R.id.rdbtn_route_fourteen:
                    routeId = 14;
                    routeTitle = "No Title";
                    break;
                case R.id.rdbtn_route_fifteen:
                    routeId = 15;
                    routeTitle = "No Title";
                    break;
                case R.id.rdbtn_route_sixteen:
                    routeId = 16;
                    routeTitle = "Alfarid Garden";
                    break;

            }

        }
    });

    btnFinish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            registerUserToFirebase(firstName, lastName, regNo, gender, campus, dept
                    , program, semester, routeId, routeTitle);
        }
    });

    return view;
}

private void registerUserToFirebase(String firstName, String lastName, String regNo,
                                    String gender, String campus, String dept, String program,
                                    String semester, int routeId, String routeTitle) {
    StudentModel studentModel = new StudentModel();
    studentModel.setFirstName(firstName);
    studentModel.setLastName(lastName);
    studentModel.setRegNo(regNo);
    studentModel.setGender(gender);
    studentModel.setCampus(campus);
    studentModel.setDept(dept);
    studentModel.setProgram(program);
    studentModel.setSemester(semester);
    studentModel.setRouteId(routeId);
    studentModel.setRouteTitle(routeTitle);


    if (FirebaseAuth.getInstance().getCurrentUser() != null){

        studentRef.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                .setValue(studentModel)
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(getActivity(), "could not send data"
                                + e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                }).addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                Toast.makeText(getActivity(), "Registarion Successfull", Toast.LENGTH_SHORT).show();
            }
        });
    } else {
        Toast.makeText(getActivity(), "User is null", Toast.LENGTH_SHORT).show();
    }


} }

实体类 部分代码

public class StudentModel {

private String firstName;
private String lastName;
private String regNo;
private String gender;
private String campus;
private String dept;
private String program;
private String semester;

public String getRouteTitle() {
    return routeTitle;
}

public void setRouteTitle(String routeTitle) {
    this.routeTitle = routeTitle;
}

private String routeTitle;
private int routeId;


public StudentModel() {
}


public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public String getRegNo() {
    return regNo;
}

public void setRegNo(String regNo) {
    this.regNo = regNo;
}

public String getGender() {
    return gender;
}

public void setGender(String gender) {
    this.gender = gender;
}

public String getCampus() {
    return campus;
}

public void setCampus(String campus) {
    this.campus = campus;
}

public String getDept() {
    return dept;
}

public void setDept(String dept) {
    this.dept = dept;
}

public String getProgram() {
    return program;
}

public void setProgram(String program) {
    this.program = program;
}

public String getSemester() {
    return semester;
}

public void setSemester(String semester) {
    this.semester = semester;
}

public int getRouteId() {
    return routeId;
}

public void setRouteId(int routeId) {
    this.routeId = routeId;
}}

存储结构对比

预期存储格式

按照Model类的字段定义,我原本希望对应用户UID节点下的数据结构为:

UID
  firstName : 
  lastName : 
  regNo : 
  gender : 
  campus : 
  dept : 
  program : 
  semester : 
  routeTitle : 
  routeId: 

实际存储结果

最终存入数据库的内容没有按照预期的Model字段格式组织,结构和设计要求存在偏差。


内容的提问来源于stack exchange,提问作者Muhammad Hanzilah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 05:06:03