Android Firebase 字典键改变大小写
Android Firebase dictionary keys changing case
我正在使用 Firebase 数据库,下面指定的是我的 java class 结构。在 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"
}
here is the screenshot of firebase database
根据您的意见,您需要知道Firebase实时数据库遵循Java Bean
属性命名约定来映射Java对象和节点中的字段.
以下是特定方法名称如何映射到 属性 名称(以及此字段名称)的一些示例:
public String getName(); // getter for property "name"
public void setName(String name); // setter for property "name"
public String getRollNumber(); // getter for property "rollNumber"
public void setRollNumber(String rollNumber); // setter for property "rollNumber"
不强制使用 getters
和 setters
。在所有这些情况下,您也可以不使用 getter/setter 并仅使用 一个 public 字段:
public String name;
public String rollNumber;
这是绝对安全的。所以不需要同时拥有 getters 和 setter。如果你有只有一个getter,Firebase会直接设置相应的字段。这 确实 但是要求您的字段名称遵循命名约定,以便 Firebase 可以找到要设置的正确字段。
其他信息,你也可以看看我在这个的回答。
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"
}
Here is the Firebase database Screenshot
我正在使用 Firebase 数据库,下面指定的是我的 java class 结构。在 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"
}
here is the screenshot of firebase database
根据您的意见,您需要知道Firebase实时数据库遵循Java Bean
属性命名约定来映射Java对象和节点中的字段.
以下是特定方法名称如何映射到 属性 名称(以及此字段名称)的一些示例:
public String getName(); // getter for property "name"
public void setName(String name); // setter for property "name"
public String getRollNumber(); // getter for property "rollNumber"
public void setRollNumber(String rollNumber); // setter for property "rollNumber"
不强制使用 getters
和 setters
。在所有这些情况下,您也可以不使用 getter/setter 并仅使用 一个 public 字段:
public String name;
public String rollNumber;
这是绝对安全的。所以不需要同时拥有 getters 和 setter。如果你有只有一个getter,Firebase会直接设置相应的字段。这 确实 但是要求您的字段名称遵循命名约定,以便 Firebase 可以找到要设置的正确字段。
其他信息,你也可以看看我在这个
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"
}
Here is the Firebase database Screenshot