Android com.firebase.client.FirebaseException:未能分析类为java.util.Date的节点
我正在尝试从Android更新Firebase对象。其中一个字段是日期 简单到:Android com.firebase.client.FirebaseException:未能分析类为java.util.Date的节点,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在尝试从Android更新Firebase对象。其中一个字段是日期 简单到: Map<String, Object> fields = new HashMap<String, Object>(); fields.put("endDate", new Date()); .... some more fields .... firebaseRef.updateChildren(fields); 当我用日期字段注释这一行时,所有其他字段都会正常更新 注意:“endDa
Map<String, Object> fields = new HashMap<String, Object>();
fields.put("endDate", new Date());
.... some more fields ....
firebaseRef.updateChildren(fields);
当我用日期字段注释这一行时,所有其他字段都会正常更新
注意:“endDate”字段是我试图添加到现有对象的新字段。Firebase存储JSON数据。JSON中没有表示日期的本机类型 开发人员通常选择其中一种表示方式作为日期:
Map<String, Object> fields = new HashMap<String, Object>();
fields.put("endDate_timestamp", new Date().getTime());
fields.put("endDate_string", new Date().toString());
ref.updateChildren(fields);
这样可以确保时间戳与在服务器上写入值的确切时刻相匹配
相关的:
Map<String, Object> fields = new HashMap<String, Object>();
fields.put("endDate_timestamp", new Date().getTime());
fields.put("endDate_string", new Date().toString());
ref.updateChildren(fields);
这样可以确保时间戳与在服务器上写入值的确切时刻相匹配
相关的:
setValue()
和updateChildren()
之间的代码路径不同。前者比后者进行更多的转换,后者不允许任何非JSON类型。请参阅以了解更多关于这方面的信息(以及可能的其他解决方法)。那么,为什么在创建对象时没有问题:firebaseRef.setValue(new MyOwnClass(new Date(),null,new Date());工作正常并保存日期。在创建对象时,firebase本身会将日期转换为时间。希望它在更新时也这样做并不不公平。setValue()
和updateChildren()
之间的代码路径不同。前者比后者进行更多的转换,后者不允许任何非JSON类型。有关这方面的更多信息(以及可能的其他解决方法),请参阅。
fields.put("endDate_server_timestamp", ServerValue.TIMESTAMP);