Reputation: 371
I am trying to store User data in my Firebase database. This is my code for handling onClick and sending the data to database:
public void onClickStore(final View view)
{
String name = binding.getUser().name.get();
String email = binding.getUser().email.get();
DatabaseReference rootDb = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersDatabase = rootDb.child("Users");
Map<String, JSONObject> userMap= new HashMap<>();
JSONObject userObject = new JSONObject();
try
{
userObject.put("Name", name);
userObject.put("Email", email);
}
catch (JSONException e)
{
e.printStackTrace();
}
userMap.put("User_01", userObject);
usersDatabase.setValue(userMap);
}
Unfortunately the app keeps crashing while trying to execute the last line of code (inserting map into the realtime database). Funnily enough, it works when I'm hardcoding the data to be inserted but not with either of userMap
or userObject
.
This is description of the error from Android Monitor:
03-19 08:20:34.937 22378-22378/com.example.jacek.simplyfootball E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.jacek.simplyfootball, PID: 22378 com.google.firebase.database.DatabaseException: No properties to serialize found on class org.json.JSONObject at com.google.android.gms.internal.zzbqi$zza.(Unknown Source) at com.google.android.gms.internal.zzbqi.zzi(Unknown Source) at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) at com.google.android.gms.internal.zzbqi.zzaw(Unknown Source) at com.google.firebase.database.DatabaseReference.zza(Unknown Source) at com.google.firebase.database.DatabaseReference.setValue(Unknown Source) at com.example.jacek.simplyfootball.RegisterActivity.onClickStore(RegisterActivity.java:89) at com.example.jacek.simplyfootball.databinding.ActivityRegisterBinding$OnClickListenerImpl.onClick(ActivityRegisterBinding.java:290) at android.view.View.performClick(View.java:5198) at android.view.View$PerformClick.run(View.java:21147) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Your help would be much, much appreciated. Thank you
Upvotes: 2
Views: 3125
Reputation: 1627
I dont understand what You wanne realy to do But..
instead of
JSONObject userObject = new JSONObject();
you can create model on user
public class Usermodel {
String Name,Email;
public Usermodel(String name, String email) {
Name = name;
Email = email;
}
public Usermodel() {
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
}
and create new object
Usermodel model = new Usermodel();
model.setname("");
model.setEmail("");
and go Ahead With Your code
Firebase will create it`s Primarykey if You want it
YourFirebaseRef.child("users").push().setValue(model);
Upvotes: 2