【问题标题】:how to store bigdecimal in firestore in Android如何在Android的firestore中存储bigdecimal
【发布时间】:2018-07-17 04:51:04
【问题描述】:
我正在尝试使用 Android Studio 将对象插入 Firestore,它给出了一条错误消息:
java.lang.IllegalArgumentException: Invalid data. Unsupported type: java.math.BigDecimal
如何将 BigDecimal 插入 Firestore?
【问题讨论】:
标签:
java
android
google-cloud-firestore
bigdecimal
【解决方案1】:
检查 Firestore 的 supported types。如果您需要其他任何内容,请转换为支持的类型,然后在阅读时转换回来。通常,您会将String 用于BigDecimal。如果您需要比较,请将零填充到您的理论最大值,或以 Double 的形式存储在另一个字段中。
【解决方案2】:
你可以做这样的事情(在 Kotlin 中):
class Model() {
@get:PropertyName("value")
@set:PropertyName("value")
var firestoreValue: String = "0"
var value: BigDecimal
@Exclude get() = firestoreValue.toBigDecimal()
@Exclude set(value) { firestoreValue = value.toPlainString() }
}
目前还没有找到更好的解决方案。如果可以为不受支持的类型实现转换器(例如 Gson 的 TypeAdapters),那就太好了。