无法将JSON对象插入Firebase实时数据库 [英] Unable to insert JSON Object into Firebase realtime database
问题描述
我正在尝试将用户数据存储在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);
}
不幸的是,在尝试执行最后一行代码(将地图插入实时数据库中)时,应用程序始终崩溃.有趣的是,当我对要插入的数据进行硬编码而不使用userMap
或userObject
之一时,它可以工作.
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屋!