Изменение словаря ключей Android Firebase - PullRequest
0 голосов
/ 20 сентября 2018

Я использую базу данных 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

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018
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"
    }

Вот скриншот базы данных Firebase

0 голосов
/ 20 сентября 2018

Согласно вашим комментариям, вы должны знать, что база данных 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.Во всех этих случаях вы также можете обойтись без геттера / установщика и использовать только a public field:

public String name;
public String rollNumber;

Что совершенно безопасно.Таким образом, не требуется иметь как геттеры, так и сеттеры.Если у вас есть только геттер, Firebase установит соответствующее поле напрямую.Для этого требуется, чтобы имя вашего поля соответствовало соглашениям об именах, чтобы Firebase могла найти правильное поле для установки.

Для получения дополнительной информации вы также можете посмотреть на мой ответ изэтот пост .

...