Java Android Firebase字典密钥更改案例

Java Android Firebase字典密钥更改案例,java,android,firebase,firebase-realtime-database,android-filterable,Java,Android,Firebase,Firebase Realtime Database,Android Filterable,我正在使用Firebase数据库,下面指定的是我的java类结构。在Firebase数据库中保存我的第一个对象后,我意识到这些键会自动转换为Firebase数据库中的小写键。是否有任何解决方案可以在保存我的对象时保留案例 public class Student { String NAME; String ROLL_NUMBER; String USER_NAME; String MAIL_ID; String PASSWORD; public Student() { } pub

我正在使用Firebase数据库,下面指定的是我的java类结构。在Firebase数据库中保存我的第一个对象后,我意识到这些键会自动转换为Firebase数据库中的小写键。是否有任何解决方案可以在保存我的对象时保留案例

public class Student {

String NAME;

String ROLL_NUMBER;

String USER_NAME;

String MAIL_ID;

String PASSWORD;


public Student() {
}

public Student(String NAME, String ROLL_NUMBER, String PASSWORD, String MAIL_ID, String USER_NAME) {
    this.NAME = NAME;
    this.ROLL_NUMBER = ROLL_NUMBER;
    this.PASSWORD = PASSWORD;
    this.MAIL_ID = MAIL_ID;
    this.USER_NAME = USER_NAME;
}

public String getNAME() {
    return NAME;
}

public String getROLL_NUMBER() {
    return ROLL_NUMBER;
}

public String getPASSWORD() {
    return PASSWORD;
}

public String getMAIL_ID() {
    return MAIL_ID;
}

public String getUSER_NAME() {
    return USER_NAME;
}
}

我也尝试过
@SerializedName
也没有任何区别。 下面是Firebase数据库中的键值对

"-LMqLmS09gGKjR-s9CML" : {
  "mail_ID" : "gyana@gmail.com",
  "name" : "Gyanaranjan",
  "password" : "123456",
  "roll_NUMBER" : "1001028",
  "user_NAME" : "gyan1028"
}, 
 "-LMqMPegnxHp8l4efj_J" : {
  "mail_ID" : "shyamu@gmail.com",
  "name" : "Shyama G",
  "password" : "113456",
  "roll_NUMBER" : "1001056",
  "user_NAME" : "shyamla1056"
} 

根据您的评论,您需要知道Firebase实时数据库遵循
JavaBean
属性命名约定,用于在Java对象和节点中的字段之间进行映射

以下是一些特定方法名称如何映射到属性名称(以及此字段名称)的示例:

使用
getter
setter
不是强制性的。在所有这些情况下,您也可以不使用getter/setter,只使用一个公共字段:

public String name;
public String rollNumber;
这是非常安全的。因此,不需要同时具有getter和setter。如果您只有一个getter,Firebase将直接设置相应的字段。但是,这确实要求您的字段名遵循命名约定,以便Firebase可以找到要设置的正确字段


有关其他信息,您还可以查看我的答案。

根据您的评论,您需要知道Firebase实时数据库遵循
Java Bean
属性命名约定,用于在Java对象和节点中的字段之间进行映射

以下是一些特定方法名称如何映射到属性名称(以及此字段名称)的示例:

使用
getter
setter
不是强制性的。在所有这些情况下,您也可以不使用getter/setter,只使用一个公共字段:

public String name;
public String rollNumber;
这是非常安全的。因此,不需要同时具有getter和setter。如果您只有一个getter,Firebase将直接设置相应的字段。但是,这确实要求您的字段名遵循命名约定,以便Firebase可以找到要设置的正确字段

关于另一个信息,你也可以看看我的答案

}

}


请向我们展示用于将数据添加到数据库的代码。FirebaseDatabase=FirebaseDatabase.getInstance();DatabaseReference myRef=database.getReference(“用户”);String key=myRef.push().getKey();学生=新学生(姓名、学号、密码、邮件、用户名);myRef.child(键).setValue(学生);您是否尝试删除旧数据并添加新数据,并查看您是否有相同的行为?以下链接提供了发生这种情况的原因的答案/解释,但无法将大写键插入Firebase数据库系统。在iOS中,他们可以轻松实现。您在谈论哪个链接?请向我们展示您用于将数据添加到数据库的代码。FirebaseDatabase=FirebaseDatabase.getInstance();DatabaseReference myRef=database.getReference(“用户”);String key=myRef.push().getKey();学生=新学生(姓名、学号、密码、邮件、用户名);myRef.child(键).setValue(学生);您是否尝试删除旧数据并添加新数据,并查看您是否有相同的行为?以下链接提供了发生这种情况的原因的答案/解释,但无法将大写键插入Firebase数据库系统。在iOS中,他们可以轻松地实现。你在谈论哪个链接?如果你认为我的答案对你有帮助,请考虑点击点击箭头左侧的复选标记来接受它。应该把颜色改成绿色。我会很感激的。谢谢如果你认为我的答案对你有帮助,请考虑通过点击箭头左侧的勾选来接受它。应该把颜色改成绿色。我会很感激的。谢谢
if you removed the public getters and make the properties as public you will be able to save any Desired case keys.

public class Student {

public String NAME;

public String ROLL_NUMBER;

public String USER_NAME;

public String MAIL_ID;

public String PASSWORD;


public Student() {
}

public Student(String NAME, String ROLL_NUMBER, String PASSWORD, String MAIL_ID, `enter code here`String USER_NAME) {
    this.NAME = NAME;
    this.ROLL_NUMBER = ROLL_NUMBER;
    this.PASSWORD = PASSWORD;
    this.MAIL_ID = MAIL_ID;
    this.USER_NAME = USER_NAME;
}
and now you will see the Database with Desired case Key

"-LMqfKkyWC189gaiR1jJ" : {
      "MAIL_ID" : "shreya@gmail.com",
      "NAME" : "Shreya",
      "PASSWORD" : "123456",
      "ROLL_NUMBER" : "1001027",
      "USER_NAME" : "shreya1027"
    }