【问题标题】:How can I write a JSONObject to a firebase database node如何将 JSONObject 写入 firebase 数据库节点
【发布时间】:2023-03-17 20:59:02
【问题描述】:

我目前正在尝试将应用程序从 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

我试图避免拆分对象并单独发布单个值,因为这可能容易出错,而且我不能冒着因循环混乱而损坏数据的风险...感谢您的帮助。

【问题讨论】:

    标签: java android json firebase firebase-realtime-database


    【解决方案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);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2022-01-18
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多