如何将 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 中的用户节点?

我尝试用

编写 JSONObject
database.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/gson dependencies implementation 'com.google.code.gson:gson:2.8.5' 那你就可以Gson gson = new Gson(); User user = gson.fromJson(jsonObject, User.class);

以上是关于如何将 JSONObject 写入 firebase 数据库节点的主要内容,如果未能解决你的问题,请参考以下文章

如何将java中的map转换成jsonobject

如何将我的 JsonObject (com.google.gson.JsonObject) 转换为 GenericRecord (org.apache.avro.generic.GenericReco

如何将 LinkedTreeMap 转换为 gson JsonObject

如何使用 gson 库将字符串转换为 JsonObject

如何将 JSONObject 值分配给 graphql 模式文件中的字段?

如何将 JsonObject 转换为类模型 kotlin android