Jacas
Jacas

Reputation: 371

Unable to insert JSON Object into Firebase realtime database

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

Answers (1)

Elsunhoty
Elsunhoty

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

Related Questions