我目前正在尝试将应用程序从SQLDatabase迁移到Firebase。我已经完成了将数据库转换为JSONObject的所有工作。有没有办法用这个对象填充 Firebase 中的用户节点?
我试图用
database.getReference("/" + user.getUid() + "/").setValue(jsonObject);
这将返回错误
com.google.firebase.database.DatabaseException: No properties to serialize found on class org.json.JSONObject
我试图避免分解对象并单独发布单个值,因为这可能容易出错,而且我不能冒着因混乱循环而损坏数据的风险......感谢您的任何帮助。
您可以使用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
然后,您可以使用类User
的实例setValue()
:
database.getReference("/" + user.getUid() + "/").setValue(user);
从文档中:
此外,还可以将自己的类的实例设置到此位置,前提是它们满足以下约束:
该类必须具有不带参数的默认构造函数
该类必须为要分配的属性定义公共 getter。反序列化实例时,没有公共 getter 的属性将设置为其默认值