无法将JSON对象插入Firebase实时数据库 [英] Unable to insert JSON Object into Firebase realtime database

查看:155
本文介绍了无法将JSON对象插入Firebase实时数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将用户数据存储在Firebase数据库中.这是我的代码,用于处理onClick并将数据发送到数据库:

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);

}

不幸的是,在尝试执行最后一行代码(将地图插入实时数据库中)时,应用程序始终崩溃.有趣的是,当我对要插入的数据进行硬编码而不使用userMapuserObject之一时,它可以工作.

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.

这是对来自Android Monitor的错误的描述:

This is description of the error from Android Monitor:

03-19 08:20:34.937 22378-22378/com.example.jacek.simplyfootball E/AndroidRuntime:致命异常:main 流程:com.example.jacek.simplyfootball,PID:22378 com.google.firebase.database.DatabaseException:无属性 在类org.json.JSONObject上找到序列化 com.google.android.gms.internal.zzbqi $ zza.(未知来源) 在com.google.android.gms.internal.zzbqi.zzi(未知来源) 在com.google.android.gms.internal.zzbqi.zzax(未知来源) 在com.google.android.gms.internal.zzbqi.zzax(未知来源) com.google.android.gms.internal.zzbqi.zzaw(未知来源) 位于com.google.firebase.database.DatabaseReference.zza(未知来源) com.google.firebase.database.DatabaseReference.setValue(未知 来源) 在 com.example.jacek.simplyfootball.RegisterActivity.onClickStore(RegisterActivity.java:89) 在 com.example.jacek.simplyfootball.databinding.ActivityRegisterBinding $ OnClickListenerImpl.onClick(ActivityRegisterBinding.java:290) 在android.view.View.performClick(View.java:5198) 在android.view.View $ PerformClick.run(View.java:21147) 在android.os.Handler.handleCallback(Handler.java:739) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:148) 在android.app.ActivityThread.main(ActivityThread.java:5417) 在java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

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

推荐答案

我不明白您真正想做什么,但是..

I dont understand what You wanne realy to do But..

代替

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;
    }
}

并创建新对象

Usermodel model = new Usermodel();
model.setname("");
model.setEmail("");

继续使用您的代码

如果需要,Firebase会创建它的主键

Firebase will create it`s Primarykey if You want it

YourFirebaseRef.child("users").push().setValue(model); 

这篇关于无法将JSON对象插入Firebase实时数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆