以编程方式在实时数据库中导入 JSON,而不是手动
Posted
技术标签:
【中文标题】以编程方式在实时数据库中导入 JSON,而不是手动【英文标题】:Import JSON in Realtime Database programmatically, not manually 【发布时间】:2021-09-26 15:06:31 【问题描述】:我希望能够使用我的应用中的按钮将 JSON 文件导入 Firebase。我知道您可以在 Firebase 控制台中手动添加 JSON 文件,但在这种情况下,我想让我的用户使用按钮导入 JSON 文件并更新实时数据库中的信息。有人可以帮我吗?
【问题讨论】:
您要将其上传到实时数据库还是 Firestore? 对不起,我应该早点说。数据库!! 你用的是java、kotlin、flutter吗? 我正在使用 kotlin 【参考方案1】:您需要先将json
转换为map
,然后将其直接保存到您想要的路径:
val jsonMap = Gson().fromJson<Any>(stringJson, object : TypeToken<HashMap<String, Any>>() .type)
Firebase ref = new Firebase(YOUR_FIREBASE_PATH);
ref.setValue(jsonMap );
【讨论】:
【参考方案2】:我希望能够手动将 JSON 文件导入 Firebase
没有用于执行此操作的 API。如果您想让用户能够将 JSON 文件的内容添加到实时数据库,那么您应该为此编写一些代码。这意味着您需要实现一个选项,用户可以在其中将 JSON 文件上传到本地存储,然后在您的应用程序代码中,您应该读取文件并将数据作为 JSON 字符串获取。要将其转换为地图,您可以简单地使用:
val jsonObj = JSONObject(jsonString)
val map = jsonObj.toMap()
现在,如果您使用的是Firebase Authentication,则要将这个 Map 对象写入实时数据库中仅对应于特定用户的位置,请使用以下代码行:
val uid = FirebaseAuth.getInstance().currentUser?.uid
val rootRef = FirebaseDatabase.getInstance()
val uidRef = rootRef.child("users").child(uid)
uidRef.setValue(map).addOnCompleteListener(/* ... /*)
【讨论】:
嗨玛丽娜!我可以帮助您了解其他信息吗?如果您认为我的回答对您有所帮助,请考虑通过单击左侧投票箭头下方的复选标记(✔️)来接受它。应将颜色更改为绿色。我真的很感激。谢谢!以上是关于以编程方式在实时数据库中导入 JSON,而不是手动的主要内容,如果未能解决你的问题,请参考以下文章