如何将 JSONObject 写入 firebase 数据库节点
Posted
技术标签:
【中文标题】如何将 JSONObject 写入 firebase 数据库节点【英文标题】:How can I write a JSONObject to a firebase database node 【发布时间】:2019-12-24 04:39:25 【问题描述】:我目前正在尝试将应用程序从 SQLDatabase 迁移到 Firebase。我已经完成了将数据库转换为 JSONObject 的所有工作。有没有办法只用这个对象填充 firebase 中的用户节点?
我尝试用
编写 JSONObjectdatabase.getReference("/" + user.getUid() + "/").setValue(jsonObject);
这会返回错误
com.google.firebase.database.DatabaseException: No properties to serialize found on class org.json.JSONObject
我试图避免拆分对象并单独发布单个值,因为这可能容易出错,而且我不能冒着因循环混乱而损坏数据的风险...感谢您的帮助。
【问题讨论】:
【参考方案1】:您可以使用ObjectMapper
将json转换为对象:
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(jsonObject.toString(), User.class);
https://fasterxml.github.io/jackson-databind/javadoc/2.7/com/fasterxml/jackson/databind/ObjectMapper.html
那么就可以在setValue()
中使用类User
的实例了:
database.getReference("/" + user.getUid() + "/").setValue(user);
来自文档:
此外,您可以将自己的类的实例设置到此位置,前提是它们满足以下约束:
类必须有一个不带参数的默认构造函数
该类必须为要分配的属性定义公共 getter。反序列化实例时,没有公共 getter 的属性将设置为其默认值
【讨论】:
我正在尝试实现该课程,但我正在使用 gradle,您能否告诉我如何做到这一点?我从 maven 存储库中获得了一个 jar 并将其放在我的 libs 文件夹中,但它没有编译。 使用 gson 代替 github.com/google/gsondependencies implementation 'com.google.code.gson:gson:2.8.5'
那你就可以Gson gson = new Gson(); User user = gson.fromJson(jsonObject, User.class);
以上是关于如何将 JSONObject 写入 firebase 数据库节点的主要内容,如果未能解决你的问题,请参考以下文章
如何将我的 JsonObject (com.google.gson.JsonObject) 转换为 GenericRecord (org.apache.avro.generic.GenericReco
如何将 LinkedTreeMap 转换为 gson JsonObject